我有一個在 vba 中使用時可以完美運行的代碼的問題,但是使用 Pyodbc 在 Python 中重寫它會引發錯誤。我盡可能地簡化了代碼,如下所示。該代碼在兩個 Access 資料庫之間復制一個表。
我確保兩個資料庫中的兩個表都是相同的,所以沒有問題。我相信錯誤可能是INSERT INTO SELECTPyodbc 中的語法不同,或者 Pyodbc 在打開一個資料庫時無法在兩個資料庫之間進行復制,例如 vba 代碼。從其中復制表的 Database1 的 python 代碼是:
conn = pyodbc.connect(
r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\DB1.accdb;')
cursor = conn.cursor()
cursor.execute(sqlStr)
sqlStr 中帶有 Database2 的 SQL 代碼,其中資料被復制到:
INSERT INTO Tab1
IN '' ';database=C:\DB2.accdb'
SELECT
Col1,
Col2
FROM Tab1
錯誤是('21S01', '[21S01] [Microsoft][ODBC Microsoft Access Driver] Number of query values and destination fields are not the same. (-3520) (SQLExecDirectW)')
我在做任何明顯的錯誤嗎?
uj5u.com熱心網友回復:
目標表(在 DB2.accdb 中)的列數似乎與您嘗試插入的列數不同。Access UI (MSACCESS.EXE) 似乎可以接受,但 Access ODBC 不喜歡它。
您需要指定目標表中的列:
sql = r"""
INSERT INTO Tab1 (Col1, Col2)
IN 'C:\Users\Public\__tmp\DB2.accdb'
SELECT
Col1,
Col2
FROM Tab1
"""
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505126.html
上一篇:動態更改功能區影像
