gpt4 book ai didi

python - 将unicode插入sqlite?

转载 作者:太空宇宙 更新时间:2023-11-03 15:24:36 24 4
gpt4 key购买 nike

我仍在学习 Python,作为一个小项目,我编写了一个脚本,该脚本可以获取文本文件中的值并将它们插入到 sqlite3 数据库中。但是有些名字有奇怪的字母(我猜你会称它们为非 ASCII),当它们出现时会产生错误。这是我的小脚本(请告诉我它是否可以更 Pythonic): 导入sqlite3

f = open('complete', 'r')
fList = f.readlines()
conn = sqlite3.connect('tpb')
cur = conn.cursor()

for i in fList:
exploaded = i.split('|')
eList = (
(exploaded[1], exploaded[5])
)
cur.execute('INSERT INTO magnets VALUES(?, ?)', eList)
conn.commit()
cur.close()

它会产生这个错误:

Traceback (most recent call last):
File "C:\Users\Admin\Desktop\sortinghat.py", line 13, in <module>
cur.execute('INSERT INTO magnets VALUES(?, ?)', eList)
sqlite3.ProgrammingError: You must not use 8-bit bytestrings unless you use a te
xt_factory that can interpret 8-bit bytestrings (like text_factory = str). It is
highly recommended that you instead just switch your application to Unicode str
ings.

最佳答案

要将文件内容转换为 unicode,您需要从其所在的任何编码进行解码。
看起来你在 Windows 上,所以一个不错的选择是 cp1252
如果您从其他地方获得文件,则所有赌注都将取消。

编码排序后,一种简单的解码方法是使用 codecs 模块,例如:

import codecs
# ...
with codecs.open('complete', encoding='cp1252') as fin: # or utf-8 or whatever
for line in fin:
to_insert = (line.split('|')[1], line.split('|')[5])
cur.execute('INSERT INTO magnets VALUES (?,?)', to_insert)
conn.commit()
# ...

关于python - 将unicode插入sqlite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com