我很难使用 MySQLdb 模块将信息插入我的数据库。我需要在表中插入 6 个变量。
cursor.execute ("""
INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation)
VALUES
(var1, var2, var3, var4, var5, var6)
""")
有人可以帮我解决这里的语法吗?
最佳答案
小心在 SQL 查询中使用字符串插值,因为它不会正确转义输入参数,并且会使您的应用程序容易受到 SQL 注入(inject)漏洞的影响。 差异可能看起来微不足道,但实际上差异很大。
不正确(存在安全问题)
c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s" % (param1, param2))
正确(带转义)
c.execute("SELECT * FROM foo WHERE bar = %s AND baz = %s", (param1, param2))
它增加了困惑,用于在 SQL 语句中绑定(bind)参数的修饰符在不同的 DB API 实现之间有所不同,并且 mysql 客户端库使用 printf
样式语法而不是更普遍接受的 '? '标记(例如 python-sqlite
使用)。
关于python - MySQL 参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50932144/