簡體   English   中英

寫入MS Access表,python win32com

[英]Write to MS Access table, python win32com

我正在使用win32com.client for python嘗試向MS Access表寫入/插入行。 我發現如何連接和查詢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語句。 我希望能夠將行和數據寫入表中。 當將win32com用於MS Office產品時,我傾向於深入MSDN頁面並嘗試解釋python代碼的VBA代碼,但是這一點讓我有些c惱。 加上長時間搜索后在互聯網上找不到任何示例,這使我再次猜測這是否可行? 希望外面有人玩過這個游戲並提出建議。

正如我在對該問題的評論中提到的那樣,使用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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM