使用python sqlite3模块,如何处理包含双引号的字段?

时间:2011-10-10 14:33:16

标签: python string sqlite double-quotes

我试图访问包含“”的数据库,例如:

  

汤姆“是一只猫。”

当我使用此代码时:

  

myData = 100; myKey ='汤姆'是“一只猫。”

     

myCursor.execute('UPDATE MyTable SET MyField =%d WHERE MyTable.Key ==   “%s”'%(myData,myKey))

我收到了这个错误

  

sqlite3.OperationalError:near“is”:语法错误

请注意,我已将%s括在了“”中。 我也试过在它周围使用单引号或添加\,都没有用。 知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

使用DB-API parameter substitution并将格式保留为sqlite3库:

myCursor.execute('UPDATE MyTable SET MyField = ? WHERE MyTable.Key == ?', (myData, myKey))

答案 1 :(得分:-2)

你不应该在sql语句中对周围的字符串使用双引号,因此你应该在语句中使用单引号:

myData = 100 
myKey = 'Tom "is" a cat.'
myCursor.execute('''UPDATE MyTable SET MyField = %d WHERE MyTable.Key ='%s' ''' % (myData, myKey))

三重单引号允许您使用单引号,就像使用文本编辑器一样。