-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
Milestone
Description
Migrated issue, originally created by Thomas Tanner (@ttanner)
sqlalchemy 0.9.9, python 2.7.9, osx,
PostgreSQL database with encoding unicode.
# -*- coding: utf8 -*-
from sqlalchemy.types import String, Integer, Enum
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, create_engine
from sqlalchemy.orm import Session
import sys
Base = declarative_base()
class Thing(Base):
__tablename__ = 'thing'
id = Column(Integer, primary_key=True)
name = Column(String(1))
value = Column(Enum('B',u'Ü',name='myvalue', native_enum=False, convert_unicode=None))
engine = create_engine(sys.argv[1], echo=True,
client_encoding='utf8')
Base.metadata.create_all(engine)
sess = Session(engine)
sess.add(Thing(name='A', value=u'Ü'))
sess.commit()
sess.query(Thing).filter_by(name='A').first()
Traceback (most recent call last):
File "./utfbug.py", line 23, in <module>
sess.query(Thing).filter_by(name='A').first()
File "<path>/sqlalchemy/orm/query.py", line 2370, in first
ret = list(self[0:1])
File "<path>/sqlalchemy/orm/query.py", line 2231, in __getitem__
return list(res)
File "<path>/sqlalchemy/orm/loading.py", line 103, in instances
util.raise_from_cause(err)
File "<path>/sqlalchemy/util/compat.py", line 199, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb)
File "<path>/sqlalchemy/orm/loading.py", line 74, in instances
rows = [process[0](row, None) for row in fetch]
File "<path>/sqlalchemy/orm/loading.py", line 459, in _instance
populate_state(state, dict_, row, isnew, only_load_props)
File "<path>/sqlalchemy/orm/loading.py", line 309, in populate_state
populator(state, dict_, row)
File "<path>/sqlalchemy/orm/strategies.py", line 169, in fetch_col
dict_[key] = row[col]
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdc' in position 0: ordinal not in range(128)
if I set convert_unicode=False, it works fine.
mysql ist not affected.
Reactions are currently unavailable