我正在用網絡爬蟲讀取斯堪的納維亞語言網站 - 並希望將它們插入到我的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