这种参数化 INSERT 查询的语法有什么问题?

What's wrong with this syntax of parameterized INSERT query?

我正在尝试将 excel 数据导入 MS-access 数据库,但它给了我 'Syntax Error Definition'

代码:

for col_index in range(0,work_sheet.ncols):
    column_value = work_sheet.cell(0,col_index).value
    for row_index in range(1, work_sheet.nrows):
        row_value = work_sheet.cell(row_index,col_index).value # For the same column, fetch the row data repeatedly
        db.Execute("INSERT INTO my_table" [column_value] "VALUES(" & row_value & ")")

错误:

C:\Data\Database>c:\python27\python.exe My_First_DB_Code.py
File "My_First_DB_Code.py", line 32
db.Execute("INSERT INTO my_table" [column_value] "VALUES(" & row_value & ")")

SyntaxError: invalid syntax

注意:我已经从 excel sheet 导入了列名,现在尝试逐列导入行值

您需要使用 Python 的字符串连接语法,而不是 SQL 的。尝试单独生成 SQL 字符串,然后在进行数据库调用之前打印它以确保它是正确的:

query_string = "INSERT INTO my_table" + str(column_value) + " VALUES( " + str(row_value) + " )"
print(query_string)
# db.Execute(query_string)
# uncomment when you know the query is correct

以上代码假定您要连接 my_tablecolumn_value,它们之间没有空格。如果像 HansUp 一样,您正在尝试输入字段名称,请像这样设置 query_string

query_string = query_string = "INSERT INTO my_table ([" + str(column_value) + "]) VALUES ('" + str(row_value) + "')"