Python 3.4 使用 MySQLdb 将 table、列和值作为变量传输

Python 3.4 transmiting table, columns and values as variables using MySQLdb

我正在使用 Python 3.4

我有这段代码:

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()

问:如何将 table 名称、列和值全部作为变量传递?

我想做这样的事情:

sql = "INSERT INTO %s %s VALUES %s" % (my_table, columns, values)
cursor.execute(sql)

您必须分两步完成,因为执行方法会转义字符串。

sql = "INSERT INTO {} ({}) VALUES ({})".format(table, ','.join(columns), ','.join('[%s]' * len(columns)))
# Generates: INSERT INTO my_table (column1,column2) VALUES (?,?)
cursor.execute(sql, values)