我正在尝试读取文件,使用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
答案 0 :(得分:0)
您的程序将数据完美地插入到数据库中。它随后检索正确的数据。问题出在您显示结果时。
当您打印元组时,系统会显示每个项目的repr()
,而不是每个项目的str()
。因此,您会在输出中看到\xe9
而不是é
。
要获得所需内容,请尝试在程序结束时替换循环:
for record in cur:
print record[0], record[1]