我有以下查询将值插入到sqlite3 db中,这是用python代码生成的;
insert into 'SplCharTest' ('Id','name','address','telefon') values (1.0, u'cust01', u'addr01 strasse 48908', 2131234213.0)
当我尝试执行此查询时,我收到以下错误;
sqlite3CursorObj.execute(dataInsertQueryForSheet)
sqlite3.OperationalError: near "'cust01'": syntax error
我注意到,在#cust01'前面有u(unicode)。正在解决这个问题。有人可以告诉我如何将unicode值插入sqlite db。简单使用' str'是不可能的,因为我使用openpyxl包从excel文件中获取unicode值,并且可能有特殊字符。
下面给出的是我的python代码
dataInsertQueryForSheet = "insert into '"+tableNameForSheet+"' ("+columnNamesCSV+") values (%s)" % unicode(rowDataList)[1:(rowDataStrLen-1)]
sqlite3CursorObj.execute(dataInsertQueryForSheet)
此处变量tableNameForSheet
包含表名,columnNamesCSV
包含CSV格式的所有列名称,rowDataList
包含要作为数组列表插入的所有值。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:3)
SQLite始终使用Unicode。
使用字符串同时避免格式化问题或SQL注入攻击的最简单方法是使用参数:
sql = "insert into "+tableNameForSheet+" ("+columnNamesCSV+") values (?,?,?,?)"
parameters = [1, u'cust01', u'addr01 strasse 48908', "2131234213"]
cursor.execute(sql, parameters)