0
我想將一個字符串列表插入到Postgres表中。Postgresql和Python:插入UTF-8字符串
這些字符串是從Windows計算機收集的文件夾名稱,然後重寫爲unix樣式的字符串。
這會起作用,但是當存在帶有「üöä」的文件夾名稱時,插入不會失敗,但會插入空字符串。
這裏是我使用插入值碼:
def db_insert_paths(paths):
paths.sort()
for path in paths:
print(path)
print(type(path))
cur.execute("INSERT INTO rasp (folder) VALUES (%s)", (path,))
cur.close()
conn.close()
return 0
下面是一些例子: 我還抓獲發送到Postgres的服務器的流量。
/mnt/hdd/Bilder/2004/2004.08.15. Dorffest
<class 'str'>
INSERT INTO rasp (folder) VALUES ('/mnt/hdd/Bilder/2004/2004.08.15. Dorffest')
此插入的作品。數據在表格中。
然而,接下來的一個不:
/mnt/hdd/Bilder/2004/2004.08.30. Filterschacht räumen und reinigen
<class 'str'>
INSERT INTO rasp (folder) VALUES ('/mnt/hdd/Bilder/2004/2004.08.30. Filterschacht r��umen und reinigen')
的條目爲空。
我在這裏做錯了什麼?我猜測這是一種編碼失敗。
我在Windows 8.1上使用python3.4和Postgresql 9.5。字段類型是「文本」。
感謝。我想避免使用encode()和decode()。手動插入字符串(在phppgadmin中)像預期的那樣工作。 排序規則是'en_US.UTF-8',字符類型也是'en_US.UTF-8'。 – fsp
您可以手動查看數據庫中的字符串嗎?我想知道phppgadmin是否會自動爲您編碼字符串。 –
此主題似乎相關:https://sourceforge.net/p/phppgadmin/bugs/250/ –