WRJ*_*WRJ 4 ms-access win32com python-3.x
我正在尝试在Python中创建一个Access数据库,并向其中添加两个新表。我正在使用win32com,并已成功创建数据库,但是无法创建表。我得到的只是无用的Windows错误。谁能帮我?
以下代码可以正常工作:
dbname = r'C:/Users/Guest/Desktop/NewDB.mdb'
db = Dispatch("Access.Application")
dbEngine = db.DBEngine
workspace = dbEngine.Workspaces(0)
dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0'
newdb = workspace.CreateDatabase(dbname, dbLangGeneral, 64)
Run Code Online (Sandbox Code Playgroud)
如何将新表添加到该数据库?
由于MS Access既是GUI .exe应用程序又是后端数据库,因此创建数据库与创建表,视图(即存储的查询)甚至过程等数据库对象的过程不同。
作为比较,另一个文件级RDMS SQLite必须将其.exe shell打开为CREATE DATABASE。服务器级RDMS(SQL Server,MySQL,Postgres)必须登录到服务器实例才能运行该命令。MS Access没有外壳程序或实例工具,只是一个应用程序对象。
因此,在使用CreateDatabase方法创建数据库之后,请考虑运行CREATE TABLE您可以使用Execute()方法执行的DDL SQL语句。
Python COM接口
from win32com.client import Dispatch
try:
dbname = r'C:/Users/Guest/Desktop/NewDB.mdb'
accApp = Dispatch("Access.Application")
dbEngine = accApp.DBEngine
workspace = dbEngine.Workspaces(0)
dbLangGeneral = ';LANGID=0x0409;CP=1252;COUNTRY=0'
newdb = workspace.CreateDatabase(dbname, dbLangGeneral, 64)
newdb.Execute("""CREATE TABLE Table1 (
ID autoincrement,
Col1 varchar(50),
Col2 double,
Col3 datetime);""")
except Exception as e:
print(e)
finally:
accApp.DoCmd.CloseDatabase
accApp.Quit
newdb = None
workspace = None
dbEngine = None
accApp = None
Run Code Online (Sandbox Code Playgroud)
Python DB API
虽然CREATE DATABASEMS Access SQL中没有,但只有在创建数据库文件后,才可以Execute使用任何Python ODBC API通过CREATE TABLE命令运行以上命令:
import pypyodbc
dbname = r'C:/Users/Guest/Desktop/NewDB.mdb'
constr = "DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={0};".format(dbname)
dbconn = pypyodbc.connect(constr)
cur = dbconn.cursor()
cur.execute("""CREATE TABLE Table1 (
ID autoincrement,
Col1 varchar(50),
Col2 double,
Col3 datetime);""")
dbconn.commit()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5864 次 |
| 最近记录: |