Tôi đang sử dụng kim tự tháp cho ứng dụng web với cơ sở dữ liệu postgres, wtforms, sqlalchemy và jinja2 và tôi gặp phải lỗi này khi ứng dụng cố gắng lấy các loại vấn đề từ cơ sở dữ liệu để điền vào một lựa chọn lĩnh vực với wtforms:Lỗi mã hóa với sqlalchemy và postgresql
Error: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
đây là loại vấn đề bảng vào model.py:
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
Into bd tôi có điều này:
# select name from ma_issue_types where id = 3;
name
------------
Teléfono
này là phần mà các lỗi xảy ra
# -*- 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
đây là Traceback
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)
tôi cố gắng này, nhưng nó đã không làm việc ascii as default encoding in python
và tôi cố gắng một cái gì đó như thế này , nhưng nó không hoạt động
gae python ascii codec cant decode byte
return dbsession.query(IssueType.id, IssueType.name.encode('utf-8')).all() #or decode('utf-8')
Đó là toàn bộ mã. Bạn có thể thử và bản địa hóa vấn đề của mình nhiều hơn và chỉnh sửa câu hỏi của chúng tôi để làm cho nó dễ xử lý hơn không? – millimoose
Lỗi ở đây là trả về dbsession.query (IssueType) .all() – jdurango
Không, đó là nơi lỗi hiển thị. Tôi có nghĩa là cố gắng để gỡ lỗi công cụ để xem những gì được gọi là cuối cùng để xem những gì đang nhận được giải mã bằng cách sử dụng 'ascii' và tại sao? – millimoose