Python MYSQL:如何在不指定列名称或问号的情况下插入语句?

Python MYSQL:如何在不指定列名称或问号的情况下插入语句?,python,mysql,Python,Mysql,我有一个元组列表,我要将其插入到一个表中。 每个元组有50个值。如何插入而不必指定列名以及有多少个? col1是一个自动递增列,因此我的插入stmt从col2开始,在col51结束 当前代码: l = [(1,2,3,.....),(2,4,6,.....),(4,6,7,.....)...] for tup in l: cur.execute( """insert into TABLENAME(col2,col3,col4.........col50,col51)) VALUES(?

我有一个元组列表,我要将其插入到一个表中。 每个元组有50个值。如何插入而不必指定列名以及有多少个

col1
是一个自动递增列,因此我的插入stmt从
col2
开始,在
col51
结束

当前代码:

l = [(1,2,3,.....),(2,4,6,.....),(4,6,7,.....)...]

for tup in l:
    cur.execute(
"""insert into TABLENAME(col2,col3,col4.........col50,col51)) VALUES(?,?,?,.............)
""")
想要:


此处记录了MySQL的INSERT语法:

没有您所展示的通配符语法。最接近的方法是省略列名:

INSERT INTO MyTable VALUES (...);
但我不建议这样做。只有确定要为表中的每一列(甚至是自动递增列)指定一个值,并且保证值的顺序与表中的列相同时,该方法才有效

您应该学习使用代码根据应用程序中的值数组构建SQL查询。下面是一个Python示例。假设您有一个名为
data\u values
的列:值对dict

placeholders = ['%s'] * len(data_values)
sql_template = """
INSERT INTO MyTable ({columns}) VALUES ({placeholders})
"""
sql = sql_template.format(
    columns=','.join(keys(data_values)),
    placeholders=','.join(placeholders)
)
cur = db.cursor()
cur.execute(sql, data_values)

要放在代码前面的示例代码:

cols = "("
for x in xrange(2, 52):
   cols = cols + "col" + str(x) + ","

test = test[:-1]+")"
在你的圈子里

for tup in l:
    cur.execute(
"""insert into TABLENAME " + cols " VALUES {0}".format(tup)
""")

这是我的想法,没有错误检查

为什么不使用循环来构建查询?从2到51循环以构建“INSERT INTO tablename”,然后循环通过每个对象发送您想要的值是不可能的(可能是因为这是一个糟糕的主意--想想如果有人在表中插入列会发生什么…)请参见规范化
for tup in l:
    cur.execute(
"""insert into TABLENAME " + cols " VALUES {0}".format(tup)
""")