当前位置:首页>python>林业-工程类别,Python操作mdb,插入数据

林业-工程类别,Python操作mdb,插入数据

  • 2026-10-11 07:46:50
林业-工程类别,Python操作mdb,插入数据

# -*- coding: utf-8 -*-

importwin32com.client

mdb_path=r"C:\FARPS\data\set.mdb"

# 尝试不同的 OLEDB Provider

providers= [

"Microsoft.ACE.OLEDB.12.0",

"Microsoft.Jet.OLEDB.4.0",

]

conn=None

forproviderinproviders:

try:

conn=win32com.client.Dispatch("ADODB.Connection")

conn.Open(f"Provider={provider};Data Source={mdb_path}")

print(f"使用 Provider: {provider}")

break

exceptExceptionase:

print(f"Provider {provider} 失败: {e}")

conn=None

ifconnisNone:

print("所有 Provider 都失败了,尝试用 Access 应用程序直接执行...")

# 用 Access 应用程序对象直接执行

access=win32com.client.Dispatch("Access.Application")

access.OpenCurrentDatabase(mdb_path)

# 如果表已存在则先删除

try:

access.CurrentProject.Connection.Execute("DROP TABLE [工程类别]")

print("已删除旧表")

except:

pass

# 创建表

access.CurrentProject.Connection.Execute("""

        CREATE TABLE [工程类别] (

            [大类代码] TEXT(2),

            [大类名称] TEXT(100)

        )

    """)

print("表已创建")

# 插入数据

data= [

        ('1', '天然林资源保护工程'),

        ('2', '三北及长江流域等重点防护林体系建设工程'),

        ('3', '退耕还林工程'),

        ('4', '京津风沙源治理工程'),

        ('5', '全国石漠化治理工程'),

        ('6', '野生动植物保护及自然保护区建设工程'),

        ('7', '速生丰产林基地建设工程'),

        ('8', '全国湿地保护工程'),

        ('9', '重点公益林经营工程'),

        ('10', '其他林业工程'),

    ]

forcode, nameindata:

sql=f"INSERT INTO [工程类别] ([大类代码], [大类名称]) VALUES ('{code}', '{name}')"

access.CurrentProject.Connection.Execute(sql)

print(f"  插入: {code} - {name}")

access.CloseCurrentDatabase()

access.Quit()

print("\n完成!")

else:

# 如果表已存在则先删除

try:

conn.Execute("DROP TABLE [工程类别]")

print("已删除旧表")

except:

pass

# 创建表

conn.Execute("""

        CREATE TABLE [工程类别] (

            [大类代码] TEXT(2),

            [大类名称] TEXT(100)

        )

    """)

print("表已创建")

# 插入数据

data= [

        ('1', '天然林资源保护工程'),

        ('2', '三北及长江流域等重点防护林体系建设工程'),

        ('3', '退耕还林工程'),

        ('4', '京津风沙源治理工程'),

        ('5', '全国石漠化治理工程'),

        ('6', '野生动植物保护及自然保护区建设工程'),

        ('7', '速生丰产林基地建设工程'),

        ('8', '全国湿地保护工程'),

        ('9', '重点公益林经营工程'),

        ('10', '其他林业工程'),

    ]

forcode, nameindata:

sql=f"INSERT INTO [工程类别] ([大类代码], [大类名称]) VALUES ('{code}', '{name}')"

conn.Execute(sql)

print(f"  插入: {code} - {name}")

conn.Close()

print("\n完成!")

最新文章

随机文章