为什么这是 Python 错误代码:参数太少。预期1。 (-3010) 在使用 pyodbc 时发生?
Why is this Python error code: Too Few parameters. Expected1. (-3010) occurring when using pyodbc?
我正在编写一个 python 脚本来执行一些 SQL 代码,但是每当我调用包含此 SQL 的函数时,它都会给我错误:
File "Z:/ ... /Script.py", line 40, in Function
cnxn.execute("""INSERT INTO Table1 VALUES (007, Bond);""")
Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')
我研究了这个问题,发现其他帖子也有同样的错误,但我似乎无法将给出的答案应用到我的代码中。例如:
facing Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')" error in python program
import pyodbc
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=Z:\ ... \DB.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
cnxn.execute("""INSERT INTO Table1 VALUES (007, Bond);""")
我最初只有单引号,并尝试了 Navnath 在他的回答中所说的并使用三引号,但没有任何改变。我相信我的 SQL 语法是正确的,所以我不明白为什么这种方法不起作用以及为什么会出现此错误。任何帮助将不胜感激!
您的问题似乎是您 运行 来自连接的 .execute()
方法,而不是来自您打开的游标。此外,明确并使用绑定变量总是更好。试试这个?
import pyodbc
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=Z:\ ... \DB.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
crsr.execute(
"""
INSERT INTO Table1 (agent_number, agent_last_name) VALUES (?, ?)
""",
('007', 'Bond')
)
根据您的连接情况,您之后可能还需要执行 .commit()
,因为您要插入、更新或删除数据。祝你好运!
我正在编写一个 python 脚本来执行一些 SQL 代码,但是每当我调用包含此 SQL 的函数时,它都会给我错误:
File "Z:/ ... /Script.py", line 40, in Function
cnxn.execute("""INSERT INTO Table1 VALUES (007, Bond);""")
Error: ('07002', '[07002] [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')
我研究了这个问题,发现其他帖子也有同样的错误,但我似乎无法将给出的答案应用到我的代码中。例如: facing Too few parameters. Expected 1. (-3010) (SQLExecDirectW)')" error in python program
import pyodbc
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=Z:\ ... \DB.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
cnxn.execute("""INSERT INTO Table1 VALUES (007, Bond);""")
我最初只有单引号,并尝试了 Navnath 在他的回答中所说的并使用三引号,但没有任何改变。我相信我的 SQL 语法是正确的,所以我不明白为什么这种方法不起作用以及为什么会出现此错误。任何帮助将不胜感激!
您的问题似乎是您 运行 来自连接的 .execute()
方法,而不是来自您打开的游标。此外,明确并使用绑定变量总是更好。试试这个?
import pyodbc
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=Z:\ ... \DB.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
crsr.execute(
"""
INSERT INTO Table1 (agent_number, agent_last_name) VALUES (?, ?)
""",
('007', 'Bond')
)
根据您的连接情况,您之后可能还需要执行 .commit()
,因为您要插入、更新或删除数据。祝你好运!