sqlalchemy ascii decode error

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Ruffy
User
Beiträge: 34
Registriert: Dienstag 2. Oktober 2012, 11:26

Hi,

Und zwar hab ich das problem dass beim parsen der einträge einer DB das ganz mit dem fehler

Code: Alles auswählen

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 67: ordinal not in range(128)
abbricht...

was seltsam ist, denn das defaultencoding von python ist laut sys.getdefaultencoding() "utf-8"

wenn ich aber nun diesen code ausführen möchte:

Code: Alles auswählen

from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import *

engine = create_engine('postgresql://admin@localhost/mediaserver', encoding='utf-8', convert_unicode=True, echo=True)
metadata = MetaData()
Base = declarative_base()

class Video(Base):
	__tablename__ = 'video'

	id = Column(Integer, primary_key=True)
	path = Column(String)
	duration = Column(Integer)
	date = Column(Integer)
	mdate = Column(Integer)
	fs_uuid = Column(Integer)
	fs_online = Column(Integer)


	def __init__(self, path, duration, date, mdate):
		self.path = path
		self.duration = duration
		self.date = date
		self.mdate = mdate

	def __repr__(self):
		return u"<Video( {0} {1} {2} {3} )>".format(self.path, self.duration, self.date, self.mdate)

Base.metadata.create_all(engine)
Session = sessionmaker()
Session.configure(bind=engine)
session = Session()

result = (
	session.query(Video)
		.order_by(desc(Video.date))
		.limit(5)
	)

for videofile in result:
	print u"{0}".format(videofile.path)
bricht das ganze mit folgender meldung ab:

Code: Alles auswählen

  File "pgsql.py", line 96, in <module>
    for videofile in result:
  File "build/bdist.linux-armv5tel/egg/sqlalchemy/orm/loading.py", line 64, in instances
  File "build/bdist.linux-armv5tel/egg/sqlalchemy/engine/result.py", line 748, in fetchall
  File "build/bdist.linux-armv5tel/egg/sqlalchemy/engine/result.py", line 715, in _fetchall_impl
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 67: ordinal not in range(128)

EDIT:
Scheint als wäre das die lösung gewesen

Code: Alles auswählen

 client_encoding='utf-8' 
Antworten