首页 > 代码库 > python环境下使用sqlalchemy和mysql搭建数据库环境及编码

python环境下使用sqlalchemy和mysql搭建数据库环境及编码

为了兼容中文和其他国家的文字,我们将编码格式都设置为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()
	
	
	
	
	






	


python环境下使用sqlalchemy和mysql搭建数据库环境及编码