Python 3.4使用MySQLdb将表、列和值作为变量传输
我正在使用Python 3.4 我有一段代码:Python 3.4使用MySQLdb将表、列和值作为变量传输,python,python-3.x,mysql-python,Python,Python 3.x,Mysql Python,我正在使用Python 3.4 我有一段代码: import MySQLdb table = "my_table" columns = ("column1", "column2") values = ("value1", "value2") conn = MySQLdb.connect (host = "localhost", user = "user", passwd = "password",
import MySQLdb
table = "my_table"
columns = ("column1", "column2")
values = ("value1", "value2")
conn = MySQLdb.connect (host = "localhost",
user = "user",
passwd = "password",
db = "my_database")
cursor = conn.cursor()
# execute an insert
cursor.execute("INSERT INTO my_table column1, column2 VALUES (value1, value2)")
cursor.commit()
cursor.close()
conn.close()
Q:如何将表名、列和值都作为变量传递
我想这样做:
sql = "INSERT INTO %s %s VALUES %s" % (my_table, columns, values)
cursor.execute(sql)
由于execute方法将转义字符串,因此必须将其作为两个步骤来执行
sql = "INSERT INTO {} ({}) VALUES ({})".format(table, ','.join(columns), ','.join('[%s]' * len(columns)))
# Generates: INSERT INTO my_table (column1,column2) VALUES (?,?)
cursor.execute(sql, values)
谢谢,这给了我一些开始。但是,当我运行它时,我得到了这个错误:TypeError:不是所有的参数在字符串格式化期间都被转换。我已经更新了答案,改为使用string.format,您是在创建sql变量时还是在执行时得到了错误?我在执行时得到了错误。sql变量的创建方式与您的注释相同。查看文档,他们似乎使用了%s而不是?。我已更新了答案。我已尝试使用“%s”,但联接将不起作用:它返回%s、%s