我有以下查询行:
c.execute("""insert into apps (url)""")
我有变量url
,我尝试在查询插入中附加。
但是你得到Mysql sintax错误
表格中有两个字段:id - autoincrement
和url
答案 0 :(得分:1)
更好的问题应该是“如何在字符串中替换值?”,因为要传递给c.execute()
的查询是 string 格式。更好的是,“如何动态格式化字符串的内容?”
在python中,要做到这一点有很多方法:
使用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'
将字符串格式化程序%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'
对于 SQL查询的特定内容,更好的方法是传递值,如:
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
以防止可能的 SQL注入攻击