为了兼容中文和其他国家的文字,我们将编码格式都设置为utf8
mysql设置utf8可以直接修改配置文件,或则通过命令行下的环境变量来进行设置
sqlalchemy设置编码字符集一定要在数据库访问的URL上增加charset=utf8,否则数据库的连接就不是utf8的编码格式
eng = create_engine('mysql://root:root@localhost:3306/test2?charset=utf8',echo=True)
注意URL的后面部分
charset=utf8
这个很关键,除了上述两处需要设置和修改的地方,另外python文件需要将编码格式设置为utf8(不带BOM)的,这样忘数据库
直接存储数据,就可以直接用'中文' ,或则u'中文'来正确存储到mysql数据库中。
mysql数据库在dos命令窗口中不能正确显示中文,如果要查看utf8编码格式的中文,最好是下载一个mysql的可视化工具。
目前我感觉不错的mysql可视化工具是SQLyog。
下面是我写的使用sqlalchemy写入数据库的demo代码,可以参考参考。
#coding=utf-8
from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'user2'
id = Column(String(20),primary_key=True)
name = Column(String(20))
class School(Base):
__tablename__ = 'school'
id = Column(String(20), primary_key=True)
name = Column(String(20))
#创建从Base派生的所有表
def createAll(eng):
Base.metadata.create_all(eng)
#删除DB中所有的表
def dropAll(eng):
Base.metadata.drop_all(eng)
#删除数据库中从Base派生的所有表
#创建session对象
if __name__ == '__main__':
#创建数据库引擎
eng = create_engine('mysql://root:root@localhost:3306/test2?charset=utf8',echo=True)
#设置回显
#eng.echo = True
#创建DBSession类型
DBSession = sessionmaker(bind=eng)
#创建session对象
session = DBSession()
try:
#创建表
createAll(eng)
#创建新User对象
new_user = User(id='13', name='我еёжжщщщьфффтххмлл')
print(u'你好吗')
#添加到session
session.add(new_user)
#提交保存到数据库
session.commit()
except BaseException,e:
print('e.message=%s' % str(e.message))
finally:
session.close()
#eng.close()