如何用变量替换查询SQL?

时间:2016-11-18 14:28:02

标签: python python-2.7

我有以下查询行:

c.execute("""insert into apps (url)""")

我有变量url,我尝试在查询插入中附加。

但是你得到Mysql sintax错误

表格中有两个字段:id - autoincrementurl

1 个答案:

答案 0 :(得分:1)

更好的问题应该是“如何在字符串中替换值?”,因为要传递给c.execute()的查询是 string 格式。更好的是,“如何动态格式化字符串的内容?”

在python中,要做到这一点有很多方法:

  1. 使用str.format()

    # Way 1: Without key to format
    >>> my_string = "This is my {}"
    >>> my_string.format('stackoverflow.com')
    'This is my stackoverflow.com'
    
    # Way 2:  with using key
    >>> my_string = "This is my {url}"
    >>> my_string.format(url='stackoverflow.com')
    'This is my stackoverflow.com'
    
  2. 将字符串格式化程序%s用作:

    # Way 3: without key to %s
    >>> my_string = "This is my %s"
    >>> my_string % 'stackoverflow.com'
    'This is my stackoverflow.com'
    
    # Way 4: with key to %s
    >>> my_string = "This is my %(url)s"
    >>> my_string % {'url': 'stackoverflow.com'}
    'This is my stackoverflow.com'
    
  3. 对于 SQL查询的特定内容,更好的方法是传递值,如:

    cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
    

    以防止可能的 SQL注入攻击