我试图访问包含“”的数据库,例如:
汤姆“是一只猫。”
当我使用此代码时:
myData = 100; myKey ='汤姆'是“一只猫。”
myCursor.execute('UPDATE MyTable SET MyField =%d WHERE MyTable.Key == “%s”'%(myData,myKey))
我收到了这个错误
sqlite3.OperationalError:near“is”:语法错误
请注意,我已将%s括在了“”中。 我也试过在它周围使用单引号或添加\,都没有用。 知道如何解决这个问题吗?
答案 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))
三重单引号允许您使用单引号,就像使用文本编辑器一样。