为了兼容中文和其他国家的文字,我们将编码格式都设置为utf8
mysql设置utf8可以直接修改配置文件,或则通过命令行下的环境变量来进行设置
sqlalchemy设置编码字符集一定要在数据库访问的URL上增加charset=utf8,否则数据库的连接就不是utf8的编码格式
eng = create_engine(‘mysql://root:[email protected]: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:[email protected]: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()
时间: 2024-10-08 17:54:11