写入 MS Access table、python win32com

Write to MS Access table, python win32com

我正在尝试 win32com.client python 尝试 write/insert 一行到 MS Access table。我找到了一个如何连接和查询 Access table here 的示例。基本上,他们的代码稍微修改为我自己使用是:

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 table 上执行 select 语句。我希望能够将行和数据写入 table。在将 win32com 用于 MS Office 产品时,我倾向于深入研究 MSDN pages 并尝试将 VBA 代码解释为 python 代码,但是这个让我有点手足无措。再加上经过长时间的搜索后在互联网上找不到示例,这让我再次猜测这是否可能?希望有人以前玩过这个并有建议。

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

import win32com.client

# ADODB constants
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;'
    )
connection.Open(DSN)
cmd = win32com.client.Dispatch(r'ADODB.Command')
cmd.ActiveConnection = connection
cmd.CommandText = "UPDATE Donors SET LastName = ? WHERE ID = ?"
cmd.Parameters.Append(cmd.CreateParameter("?", adVarWChar, adParamInput, 255))
cmd.Parameters.Append(cmd.CreateParameter("?", adInteger, adParamInput))
cmd.Parameters(0).Value = "Thompson"
cmd.Parameters(1).Value = 10
cmd.Execute()
connection.Close()