数据库
首页 > 数据库> > python – MySQL参数化查询

python – MySQL参数化查询

作者:互联网

我很难使用MySQLdb模块将信息插入到我的数据库中.我需要在表中插入6个变量.

cursor.execute ("""
    INSERT INTO Songs (SongName, SongArtist, SongAlbum, SongGenre, SongLength, SongLocation)
    VALUES
        (var1, var2, var3, var4, var5, var6)

""")

有人可以帮我解决这里的语法吗?

解决方法:

请注意对SQL查询使用字符串插值,因为它不会正确地转义输入参数,并会使您的应用程序对SQL注入漏洞开放.差异可能看起来微不足道,但实际上它是巨大的.

不正确(有安全问题)

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语句中的参数的修饰符在不同的DB API实现之间有所不同,并且mysql客户端库使用printf样式语法而不是更普遍接受的’?’标记(由例如python-sqlite使用).

标签:python,mysql,bind-variables
来源: https://codeday.me/bug/20190911/1803201.html