postgres 데이터베이스, wtforms, sqlalchemy 및 jinja2가있는 웹 응용 프로그램에 피라미드를 사용하고 있습니다. 응용 프로그램이 데이터베이스에서 문제 유형을 선택하려고 할 때이 오류가 발생합니다. wtforms 필드 :이 model.py에 문제 유형 테이블sqlalchemy 및 postgresql 인코딩 오류
Error: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
:
class Mixin(object):
id = Column(Integer, primary_key=True, autoincrement=True)
created = Column(DateTime())
modified = Column(DateTime())
__table_args__ = {
'mysql_engine': 'InnoDB',
'mysql_charset': 'utf8'
}
__mapper_args__ = {'extension': BaseExtension()}
class IssueType(Mixin, Base):
__tablename__ = "ma_issue_types"
name = Column(Unicode(40), nullable=False)
def __init__(self, name):
self.name = name
는 BD에 부탁이 있습니다
# select name from ma_issue_types where id = 3;
name
------------
Teléfono
,
이 오류가
# -*- coding: utf-8 -*-
from issuemall.models import DBSession, IssueType
class IssueTypeDao(object):
def getAll(self):
dbsession = DBSession()
return dbsession.query(IssueType).all() #HERE THROWS THE ERROR
이이
Traceback (most recent call last):
File "/issueMall/issuemall/controller/issueRegisterController.py", line 16, in issue_register
form = IssueRegisterForm(request.POST)
File "/env/lib/python2.7/site-packages/wtforms/form.py", line 178, in __call__
return type.__call__(cls, *args, **kwargs)
File "/env/lib/python2.7/site-packages/wtforms/form.py", line 224, in __init__
super(Form, self).__init__(self._unbound_fields, prefix=prefix)
File "/env/lib/python2.7/site-packages/wtforms/form.py", line 39, in __init__
field = unbound_field.bind(form=self, name=name, prefix=prefix, translations=translations)
File "/env/lib/python2.7/site-packages/wtforms/fields/core.py", line 301, in bind
return self.field_class(_form=form, _prefix=prefix, _name=name, _translations=translations, *self.args, **dict(self.kwargs, **kwargs))
File "/issueMall/issuemall/form/generalForm.py", line 11, in __init__
types = issueTypeDao.getAll()
File "/issueMall/issuemall/dao/master/issueTypeDao.py", line 11, in getAll
return self.__dbsession.query(IssueType).all()
File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/query.py", line 2115, in all
return list(self)
File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/query.py", line 2341, in instances
fetch = cursor.fetchall()
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 3205, in fetchall
l = self.process_rows(self._fetchall_impl())
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 3172, in _fetchall_impl
return self.cursor.fetchall()
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
내가 이것을 시도 역 추적하다 발생하는 부분이지만, ascii as default encoding in python
를 작동하지 않았다 나는 이런 식으로 뭔가를 시도 , 그러나 작동하지 않았다.
gae python ascii codec cant decode byte
return dbsession.query(IssueType.id, IssueType.name.encode('utf-8')).all() #or decode('utf-8')
많은 코드가 있습니다. 문제를 좀 더 현지화하고 좀 더 다루기 쉽도록 질문을 편집 할 수 있습니까? – millimoose
여기에 오류가 있습니다. dbsession.query (IssueType) .all()이 반환됩니다. – jdurango
아니요, 이것이 오류가 나타나는 곳입니다. 나는'ascii '를 사용하여 무엇이 디코드되고 있는지를 알기 위해 마지막에 무엇이 호출되는지를보기 위해 디버깅을 시도하는 것을 의미한다. 왜 그런가? – millimoose