从python代码中将unicode值插入sqlite

时间:2014-07-30 15:41:55

标签: python sqlite unicode

我有以下查询将值插入到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包含要作为数组列表插入的所有值。

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:3)

SQLite始终使用Unicode。

使用字符串同时避免格式化问题或SQL注入攻击的最简单方法是使用参数:

sql = "insert into "+tableNameForSheet+" ("+columnNamesCSV+") values (?,?,?,?)"
parameters = [1, u'cust01', u'addr01  strasse 48908', "2131234213"]
cursor.execute(sql, parameters)