【发布时间】:2015-05-07 07:41:17
【问题描述】:
我正在尝试读取文件,使用 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
【问题讨论】:
-
两个列表完全相同。
-
另外,
line = u'73::Misérables, Les'。 -
你为什么使用古老的 Python 2?在 Python 3 中,很多事情都变得更好了,例如,默认情况下,字符串支持 Unicode。
-
SQL INSERT 语句不应该是:INSERT INTO movie Values (73,'Misérables, Les') 而不是 INSERT INTO movie Values (73,'Mis\xe9rables, Les')
-
docs.python.org/3.4/library/sqlite3.html 有一些关于此的信息。搜索 text_factory。