python-sqlalchemy 使用学习记录之基础连接数据库&安装接篇

发布时间:2020-09-08 浏览量: 322 文章分类: python

先说说背景吧,其实使用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')

同时这个框架还支持OracleSQLServerSQLite等,其他的具体连接说明可以从上面的那个链接去看一下。

create_engine 参数

编码问题(默认是utf8): 连接数据库的时候可以设置一下数据库编码,例如charset=utf8,可以在连接的时候如下:

engine=create_engine('mysql+pymysql://scott:tiger@localhost/foo?charset=utf8')

max_overflow
最大连接数默认为5

pool_size 
连接池数量