最新内容请查阅我的博客:[佩恩的博客](https://www.wuyabala.com/article/7)
--------------------------------------
先说说背景吧,其实使用pymysql、mysqldb很久了,一直很想搞一个通用的类没来解决不同的脚本遇到的问题,但是貌似总觉得会有各种想不到的问题,在使用django的orm之后,感觉打开了一个新的世界。一直到发现了神器 sqlalchemy 这个orm框架。就记录一下自己学习的过程中遇到的问题和学习收获吧。
环境:python3.6、sqlalchemy 1.1.13
数据库:mysql
安装篇
安装比较简单,可以直接在官网 (http://www.sqlalchemy.org) 下载,也可以pip安装。基本不会遇到什么问题,如果遇到问题的,也可以去github下载安装包,直接安装https://github.com/zzzeek/sqlalchemy
其实官方的文档也非常详细了,如果英文不错的朋友,也可以直接去看官方的文档。http://docs.sqlalchemy.org/en/latest/
安装后先检查是否安装成功
import sqlalchemy
print(sqlalchemy.__version__)
---->1.1.13
就搞定了。。
连接表
首先需要引入create_engine 这个方法
from sqlalchemyimport create_engine
engine= create_engine("mysql+pymysql://root:12345@127.0.0.1/test?charset=utf8")
#engine = create_engine("连接方式://数据库名:数据库密码(没有就为空)@数据库地址:数据库端口(默认端口为空也可以)/数据库名?charset=数据库编码")
这里补充一下说明:
关于连接的方式,官方给了很多样例,具体可以看这里:http://docs.sqlalchemy.org/en/latest/core/engines.html#
比如如果是py2.x系列的,因为底层使用的mysqldb,如果安装了这个模块,可以直接使用下面的样例连接:
gine=create_engine("mysql://scott:tiger@hostname/dbname",encoding='latin1',echo=True)
但是py3.x系列的因为一直用的是pymysql,所以连接的时候需要注意一下,可以用下面的方法连接:
engine=create_engine('mysql+pymysql://scott:tiger@localhost/foo')
如果连接的是远程的数据库,可以用以下的方式:
engine = create_engine('postgresql://scott:tiger@localhost/mydatabase')
engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
engine = create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')
同时这个框架还支持Oracle、SQLServer、SQLite等,其他的具体连接说明可以从上面的那个链接去看一下。
create_engine 参数
编码问题(默认是utf8):
连接数据库的时候可以设置一下数据库编码,例如charset=utf8,可以在连接的时候如下:
engine=create_engine('mysql+pymysql://scott:tiger@localhost/foo?charset=utf8')
max_overflow
最大连接数,默认为5
pool_size
连接池数量
持续完善。。。