Python-MySQL参数化查询

发布于 2021-02-02 23:21:31

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

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

""")

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

关注者
0
被浏览
179
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    提防对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)。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看