From: | Andreas Tille <andreas(at)an3as(dot)eu> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | UnicodeDecodeError in curs.fetchall() beim Port von Python2 auf Python3 |
Date: | 2019-10-01 07:28:15 |
Message-ID: | 20191001072815.jwgqjkvbrvguprkc@an3as.eu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Hallo,
ich gebe hier mal ein kurzes Code-Schnipsel bei der Abfrage der Debian
Ultimate Database an, das für Python2 funktioniert hat aber wenn es mit
Python3 ausgeführt wird, einen Fehler wirft. Könnte sein, daß ich mich
damit auch an Python-Experten wenden muß - aber ich versuche es erstmal
hier:
$ cat debug.py
import psycopg2
conn = psycopg2.connect(database="udd")
curs = conn.cursor()
query = """SELECT name, id from carnivore_names cn
WHERE id IN (SELECT id FROM carnivore_names
WHERE id not in (SELECT id FROM carnivore_names_prefered)
GROUP BY id HAVING COUNT(*) > 1)
ORDER BY id;"""
print(query)
curs.execute(query)
for r in curs.fetchall():
print(r)
$ python2 debug.py
SELECT name, id from carnivore_names cn
WHERE id IN (SELECT id FROM carnivore_names
WHERE id not in (SELECT id FROM carnivore_names_prefered)
GROUP BY id HAVING COUNT(*) > 1)
ORDER BY id;
('Roberto C. Sanchez', 6399)
('Roberto C. S\xc3\xa1nchez', 6399)
liefert offensichtlich ein Resultat mit nicht-ASCII Zeichen. Python2 hat
damit kein Problem.
$ python3 debug.py
SELECT name, id from carnivore_names cn
WHERE id IN (SELECT id FROM carnivore_names
WHERE id not in (SELECT id FROM carnivore_names_prefered)
GROUP BY id HAVING COUNT(*) > 1)
ORDER BY id;
Traceback (most recent call last):
File "maintain_names_prefered_debug.py", line 14, in <module>
for r in curs.fetchall():
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 12: ordinal not in range(128)
Nun ist mir bekannt, daß Python3 die Typen byte und string unterscheidet
- aber wenn der Absturz schon bei curs.fetchall() erfolgt, habe ich gar
keine Chance, da irgendwas zu encoden.
Was muß ich an der Abfrage ändern, damit curs.fetchall() nicht abstürzt?
Viele Grüße
Andreas.
From | Date | Subject | |
---|---|---|---|
Next Message | Nicola Tiling | 2019-10-27 12:09:41 | Tabelle umgruppieren ? |
Previous Message | Daniel Westermann (DWE) | 2019-09-25 12:42:23 | Announcing the German-speaking PostgreSQL Conference 2020 |