python MySQLDb插入准备好的语句

use*_*517 2 python mysql database mysql-python

我有一张有田地的桌子

TABLE_PASTE(
      user_text longtext NOT NULL,
      number integer NOT NULL
 )
Run Code Online (Sandbox Code Playgroud)

我试图TABLE_PASTE使用MySQLDb驱动程序从python 在此表中插入一行.

text="large_text"
value = 1
cursor.execute("Update TABLE_PASTE set user_text = ? where number = ?",(text,value))
Run Code Online (Sandbox Code Playgroud)

我收到这个错误

query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud)

Fas*_*tle 9

有了MySQLdb你要使用参数化(准备语句技术上蟒蛇不存在)在Python 2.x版本的格式类似于字符串声明

cursor.execute("Update TABLE_PASTE set user_text = %s where number = %s",(text,value))
Run Code Online (Sandbox Code Playgroud)

请注意,即使您value是一个,int您仍然必须使用%s它在您的查询中格式化它.

你可以在MySQLdb 这里找到一个很好的教程.