我有一个看起来很简单的问题:
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:/Users/vlcek/Desktop/company.accdb;'
)
connection = pyodbc.connect(conn_str)
cursor = connection.cursor()
first_name='Peter'
second_name='Jackson'
sql="Insert into people values (25, ?, ?)"
cursor.execute(sql2(first_name, second_name,))
connection.commit()
但是我收到错误消息TypeError: 'str' object is not callable
。
有人可以告诉我可能是什么问题吗?如果我不使用参数而只写'Peter'
,'Jackson'
,那么一切都会正常。
答案 0 :(得分:1)
您发布的代码中没有名为sql2
的任何内容。但是我要假设它要么是sql
,要么是其他SQL查询字符串。
问题在于您试图像对待函数一样调用该字符串:
sql2(first_name, second_name,)
调用带有两个参数的字符串是什么意思?这没有任何意义,因此Python为您提供了TypeError
。
我认为您正在尝试这样做:
cursor.execute(sql2, (first_name, second_name,))
换句话说,您不想在两个参数上调用sql2
然后将结果传递给execute
,而只想传递sql2
和两个值的元组到execute
。
答案 1 :(得分:0)
您正试图将字符串sql(typo sql2?)作为函数调用。而是尝试:
sql="Insert into people values (25, %s, %s)"
cursor.execute(sql,(first_name, second_name))