我正在用网络爬虫读取斯堪的纳维亚语言网站 - 并希望将它们插入到我的PostgreSQL数据库中。使用Python将utf8数据插入PostgreSQL的问题
本来我试图编码我PSQL DB为UTF-8,然后手动尝试插入会是这样一个问题的字符:
Insert into name (surname) VALUES ('Børre');
这是在windows PSQL椰壳。
这给了我以下错误:错误:编码为“UTF8”的无效字节序列:0x9b。因此,在做了一些Google搜索之后,我将客户端编码更改为latin1。现在这个声明是成功的。服务器编码仍然是utf8。
当我通过我的python脚本执行相同的插入操作时,该名称将以数据库的形式出现在我的数据库中。如果我将客户端的编码更改为utf8,我还会得到具有错误特殊字符的条目。
我的python脚本是utf8编码的,但打印的名称正确。
Insert语句:
con = psycopg2.connect(*database details*)
print("Opened database successfully")
cur = con.cursor()
#INSERT NAME
query = "INSERT INTO name (surname) VALUES (%s) RETURNING id"
data = ('børre')
cur.execute(query,data)
如前所述,打印(personObject.surname)给出 '博雷'
如果我尝试以下方法:
query = "INSERT INTO name (surname) VALUES (%s) RETURNING id"
data = ('børre'.encode('utf-8'))
cur.execute(query,data)
我得到以下我的数据库:
\ x62c383c2b8727265
哪个版本的Python? –
你可以发布你的堆栈跟踪吗? –
为什么不使用UTF-8编码?今天,没有理由不使用它。 – Daniel