Python MYSQL:如何在不指定列名称或问号的情况下插入语句?
我有一个元组列表,我要将其插入到一个表中。 每个元组有50个值。如何插入而不必指定列名以及有多少个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(?
?
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)
""")