繁体   English   中英

如何通过mysql python向数据库插入多个值(列表)

[英]How insert multiple values (list) to database via mysql python

我使用 mysql.connector 在 Python 中连接到数据库。 我可以创建将值插入数据库的查询,例如

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)" val = ("John", "Highway 21") mycursor.execute(sql, val) mydb.commit()

但我想知道如何对列表做同样的事情(列表是动态的,所以有时它看起来像这样:[val1, val2, val3] 其他时间看起来像这样 [val1, val2, val3, val4, ... val55] . 我准备了查询:

INSERT INTO tablename ("+', '.join(dataset.columns.tolist())+") VALUES (%s, %s)"但问题是如何处理 VALUES 中的参数 %s 因为有时正如我所说它可以是 4,其他时间是 55。到目前为止,我唯一的想法是在循环中创建字符串并根据需要添加尽可能多的 %s 参数。

由于您的 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)))

但是“这里有龙!”:

  • 引号转义是调用者的责任
  • 没有防止 sql 注入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM