将UNICODE插入sqlite3

时间:2015-05-06 19:26:07

标签: python unicode sqlite

我正在尝试读取文件,使用python 2.7解析数据,并将数据导入sqlite3。但是,我在插入数据时遇到了问题。解析文件中的一行后,我的字符串中的é将替换为\ xe9。在我从文件中分割出这一行之后,我想要一个包含[73,'Misérables,Les']的列表,但是我得到的是[73,'Mis \ xe9rables,Les']这搞砸了SQL INSERT语句。我怎样才能解决这个问题?

#!/usr/bin/python
# -*- coding: latin-1 -*-
import sqlite3
line = '73::Misérables, Les'.decode('latin-1')
vals = line.split("::")

con = sqlite3.connect('myDb.db')
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS movie")
cur.execute('CREATE TABLE movie (id INT, title TEXT)')
sql = 'INSERT INTO movie VALUES (?,?)'
cur.execute(sql,tuple(vals))

cur.execute('SELECT * FROM movie')
for record in cur:
    print record

1 个答案:

答案 0 :(得分:0)

您的程序将数据完美地插入到数据库中。它随后检索正确的数据。问题出在您显示结果时。

当您打印元组时,系统会显示每个项目的repr(),而不是每个项目的str()。因此,您会在输出中看到\xe9而不是é

要获得所需内容,请尝试在程序结束时替换循环:

for record in cur:
    print record[0], record[1]
相关问题