cur.execute('SELECT insert_profile("name", "favorite color example")')
当我尝试使用字符串插值插入传递给execute函数的变量字符串时,就会出现问题。
我试着对变量使用双引号,对字符串文字使用单引号,但这只是执行通常的操作。如:
name = "Harry" color = "Blue" cur.execute('SELECT insert_profile({0}, {1})'.format(name, color)
我还尝试嵌套变量,但它将文字嵌套字符串插入数据库:
name = "'Harry'" color = "'Blue'"
cur.execute( ... """INSERT INTO some_table (an_int, a_date, another_date, a_string) ... VALUES (%(int)s, %(date)s, %(date)s, %(str)s);""", ... {'int': 10, 'str': "O'Reilly", 'date': datetime.date(2005, 11, 18)})
查询字符串具有引用字典中键的占位符,驱动程序将使用适当的引号、转义等插入值,这可以为您节省很多麻烦。
format 。由于SQL注入,这留下了一个巨大的安全漏洞。让司机做艰苦的工作!
format