2014-07-26 2 views
0

sqlalchemy를 사용하여 u'F\u0151biztos\xedt\xf3' 열 이름의 mssql 데이터베이스를 쿼리하고 싶습니다. (필자는 pymssql 드라이버를 사용하고 있습니다). 이 열 이름을 'Fobiztosito'이라는 ascii 열 키에 매핑했습니다. 이 열이 (: http://pastebin.com/G20T6s92 여기에 전체 스택 추적) : 비록 실패에 유니 코드 열 이름에 대한 필터링

지금 내 테이블의 열은
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') 

필터링

로 나타

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

는 SQLA에 버그가 있다는 사실을 거라 생각하고 (귀하의 경우 CATEGORY_NAME에)이 자리에 대한 원래의 열 이름을 사용하지만, 당신이 내 문제를 볼 수있는 자리 표시 자 사전 –

답변

0

utf-8 데이터 정렬을 사용하지 않는 이유는 무엇입니까? 나는 유니 코드 텍스트 나 기호 또는 쿼리 테이블을 사용해야 할 때만 utf-8, 유니 코드 또는 UnicodeText를 사용하는 모든 곳에서 러시아어로 작업하고 있습니다.

cat_name = self.category.query.with_entities(models.Category.category_name,models.Category.id).\ 
     filter_by(category_name=u'Категория 1').first() 
+0

에 대한 아스키 쿼리 인수에없는 , 그러나 열 명명에. https://groups.google.com/forum/#!topic/sqlalchemy/YbeijtyvpdU – Akasha

+0

여기에 표시된 것처럼 정수 값에서도 같은 오류가 발생합니다. 그런 다음 모든 열의 이름을 변경하는 이유는 무엇입니까? :디 – cyberra

관련 문제