python - 写入 MS Access 表,python win32com

标签 python ms-access insert win32com

我正在使用 python 的 win32com.client 来尝试向 MS Access 表写入/插入一行。我找到了如何连接和查询 Access 表 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 表上执行 select 语句。我希望能够将行和数据写入表中。当将 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()

关于python - 写入 MS Access 表,python win32com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40476147/

相关文章:

python - WAF 自动化 qt 配置

python - Sphinx 和从 swigged C++ api 记录 python

database - 在多个表中存储相同的记录

html - 在mysql中分别从另外两个表插入行到一个表中

java - 从 mysql 插入时出错

python - SymPy 无法求解三角方程组

python - 为什么 numpy 向量化函数显然被称为额外时间?

ms-access - 在列中插入默认值( Access 数据库)

date - 将操作应用于具有不规则日期条件的数据字段

mysql - 如何将将一列分成两列的 MySQL 查询结果添加到表中?