插入值作为参数-Python

时间:2018-08-20 22:50:51

标签: python parameters insert

我有一个看起来很简单的问题:

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',那么一切都会正常。

2 个答案:

答案 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))