我使用mysql.connector连接到Python中的数据库。我可以创建将值插入数据库的查询,例如
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)
mydb.commit()
但是我不知道该如何使用list(list是动态的,所以有时看起来像这样:[val1,val2,val3],而其他时候看起来像这样[val1,val2,val3,val4,.. 。val55]。我已经准备好查询:
INSERT INTO tablename ("+', '.join(dataset.columns.tolist())+") VALUES (%s, %s)"
,但问题是如何处理VALUES中的参数%s,因为有时正如我所说的可以是4,而其他时候是55。到目前为止,我唯一的想法是在循环中创建字符串并添加尽可能多的字符串根据需要%s参数。
答案 0 :(得分:1)
由于您的SQL查询需要真正地动态(更进一步,您需要进入ORM和SQL工具包区域),我想您需要类似的东西
def gen_sql(fields, values):
return f'INSERT INTO customers ({",".join(fields)}) VALUES ({",".join(map(str,values))})'
print(gen_sql('name address'.split(), "'Johh' 'New-York'".split()))
print(gen_sql('a b c '.split(), (1,2,3)))
但是“这是龙!”: