由于MS Access既是GUI .exe应用程序又是后端数据库,因此创建数据库与创建数据库对象(如表,视图(即存储的查询),甚至是过程)不同.
作为比较,另一个文件级RDMS,SQLite,必须将其.exe shell打开到CREATE DATABASE.并且服务器级RDMS(SQL Server,MySQL,Postgres)必须登录到服务器实例才能运行该命令. MS Access没有shell或实例工具,只有应用程序对象.
因此,在使用CreateDatabase方法创建数据库之后,请考虑将一个DDL SQL语句运行到CREATE TABLE,您可以使用Execute()方法.
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
Python DB API
虽然CREATE DATABASE在MS Access SQL中不可用,但只有在创建数据库文件后,才能使用任何带有CREATE TABLE命令的Python ODBC API运行上述Execute:
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()