使用postgrepsql当中问中有中文时执行select语句报错
代码如下:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
#中国
engine=create_engine('postgresql+psycopg2://zhangtao:123456@127.0.0.1:5432/mydb',encoding='utf-8',echo=True)
#engine=create_engine('oracle://DBMOPADMIN:DBMOPADMIN@PDTESTDB10',encoding='gbk')
DBsession=sessionmaker(bind=engine)
session=DBsession()
result=session.execute('select * from order_info')
print result
res=result.fetchall()
for r in res:
print r[0]
执行报错误如下:
Traceback (most recent call last):
File "pg.py", line 17, in <module>
res=result.fetchall()
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/result.py", line 1125, in fetchall
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/result.py", line 1119, in fetchall
File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/result.py", line 1070, in _fetchall_impl
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
解决办法
engine=create_engine('postgresql+psycopg2://zhangtao:123456@127.0.0.1:5432/mydb',encoding='utf-8',echo=True,use_native_unicode=False)