写入MS Access表,python win32com

写入MS Access表,python win32com,python,ms-access,insert,win32com,Python,Ms Access,Insert,Win32com,我正在使用win32com.client for python尝试向MS Access表写入/插入一行。我发现了一个如何连接和查询访问表的示例。基本上,他们为我自己的使用而稍微修改的代码是: import win32com.client connection = win32com.client.Dispatch(r'ADODB.Connection') DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=c:\\testdb.mdb;' co

我正在使用win32com.client for python尝试向MS Access表写入/插入一行。我发现了一个如何连接和查询访问表的示例。基本上,他们为我自己的使用而稍微修改的代码是:

import win32com.client

connection = win32com.client.Dispatch(r'ADODB.Connection')
DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=c:\\testdb.mdb;'
connection.Open(DSN)
recordset = win32com.client.Dispatch(r'ADODB.Recordset')
recordset.Open('SELECT * FROM Table1', connection, 1, 3)
fields_dict = {}
for x in range(recordset.Fields.Count):
    fields_dict[x] = recordset.Fields.Item(x).Name
    print fields_dict[x], recordset.Fields.Item(x).Value

这告诉我如何在Access表上执行select语句。我希望能够将行和数据写入表。在MS Office产品中使用win32com时,我倾向于深入研究,并尝试将VBA代码解释为python代码,但这一次有点束缚了我。这对夫妇说,经过长时间的搜索,在互联网上找不到任何例子,这让我再次猜测这是否可能?希望有人以前也有过这样的经历并提出了建议。

正如我在对问题的评论中提到的,使用pyodbc(或pyodbc)和Access ODBC驱动程序是执行CRUD操作的更常见的方法,但是如果您真的想使用win32com和OLEDB,那么您可以像这样执行
更新

导入win32com.client
#ADODB常数
adVarWChar=202
adInteger=3
adParamInput=1
connection=win32com.client.Dispatch(r'ADODB.connection')
DSN=(
r'PROVIDER=Microsoft.Jet.OLEDB.4.0;'
r'DATA SOURCE=C:\Users\Public\mdbTest.mdb;'
)
连接。打开(DSN)
cmd=win32com.client.Dispatch(r'ADODB.Command')
cmd.ActiveConnection=connection
cmd.CommandText=“更新捐赠者集LastName=?其中ID=?”
cmd.Parameters.Append(cmd.CreateParameter(“?”,adVarWChar,adParamInput,255))
cmd.Parameters.Append(cmd.CreateParameter(“?”,adInteger,adParamInput))
cmd.Parameters(0).Value=“汤普森”
命令参数(1).值=10
cmd.Execute()
连接。关闭()

如果可以使用win32com执行
SELECT
语句,那么也可以执行
INSERT
语句,尽管为
ADODB.Command
对象指定参数会有些繁琐。一种更常见的方法是将pyodbc(或者pyodbc)与Access ODBC驱动程序一起使用,以执行此类简单的CRUD操作,并保存win32com,以便使用Access DAO对数据库执行较低级别的操作,例如,进行Access DDL无法处理的结构更改。感谢Gord。如果可以的话,我想继续使用win32com。在我的搜索之旅中,我看到了pyodbc。这就是我下一步要做的,如果这不起作用的话。借助@GordThompson的评论,MS Access既是一个后端数据库,也是一个GUI.exe应用程序。当打算运行插入语句的SQL语句时,请考虑与其他RDMS:SQLite、SQLServer、MySQL等类似的DAPI API连接(例如,ODBC)。当需要调整窗体/报表/宏/模块时,运行Access App方法,如“代码> DOMMD。*/CODE”或其他应用层,然后使用COM接口。请记住,VBA是访问.exe和COM的外部组件,就像使用Python一样!谢谢你,戈德。我做了一些修改供自己使用,并让你的脚本为我工作。我也在仔细观察pyodbc。你帮了大忙。干杯