我想使用sqlalchemy查询一个名为u'F\u0151biztos\xedt\xf3'
的mssql数据库(我使用pymssql驱动程序)。我已将此列名映射到ascii列键,名为'Fobiztosito'
。
现在我的表格列显示为
In [32]: Biztosito.__table__.c.Fobiztosito
Out[32]: Column('F\u0151biztos\xedt\xf3', VARCHAR(length=50, collation=u'Hungarian_Technical_CI_AS'), table=<BIZTOSIT>, key='Fobiztosito')
虽然此列上的过滤失败(此处为完整堆栈跟踪:http://pastebin.com/G20T6s92):
In [38]: session.query(Biztosito.pk).filter(Biztosito.Fobiztosito=='AHB').all()
<type 'str'>: (<type 'exceptions.UnicodeEncodeError'>, UnicodeEncodeError('ascii', u'params dictionary did not contain value for placeholder: F\u0151biztos\xedt\xf3_1', 58, 59, 'ordinal not in range(128)'))
这是查询语句
In [37]: print session.query(Biztosito.pk).filter(Biztosito.Fobiztosito=='AHB').statement
SELECT [BIZTOSIT].[BiztKod]
FROM [BIZTOSIT]
WHERE [BIZTOSIT].[F\u0151biztos\xedt\xf3] = %(F\u0151biztos\xedt\xf3_1)s
有什么想法吗?
答案 0 :(得分:0)
为什么不使用utf-8校对?我正在使用俄语,当我需要使用unicode文本或符号或查询表时,我只使用utf-8,Unicode或UnicodeText。
cat_name = self.category.query.with_entities(models.Category.category_name,models.Category.id).\
filter_by(category_name=u'Категория 1').first()