likes
comments
collection
share

SQLAlchemy系列之SQLAlchemy数据库连接

作者站长头像
站长
· 阅读数 19

常见的关系型数据库主要有MySQL、Oracle、SQLServer、SQLite和PostgreSQL。操作数据库的方法大致有以下两种:

(1) 直接使用数据库接口连接。在python的关系数据库连接模块中,分别有pymysql、cx_Oracle、pymssql、sqlite3和psycopg2。通常,通常,这类数据库的操作步骤都是连接数据库、执行SQL语句、提交事物、关闭数据库连接。

(2) 通过ORM框架来操作数据库。常见的ORM框架模块有SQLObject、Stom、Django的ORM、Peewee和SQLAlchemy

1.SQLAlchemy的概述和安装

SQLAlchemy可以直接使用pip命令安装

pip install SQLAlchemy

安装过程如图所示:

SQLAlchemy系列之SQLAlchemy数据库连接

使用SQLAlchemy连接数据库实质上还是通过数据库模块实现连接,安装SQLAlchemy后还需要安装数据库的接口模块,比如连接MySQL需要安装pymysql模块、连接SQLite需要sqlite3模块等。

2.连接数据库

以本地MySQL的test数据库为例,用户名root,密码123456,默认端口3306。数据库的具体信息如图所示:

SQLAlchemy系列之SQLAlchemy数据库连接

2.1 连接原理

SQLAlchemy连接数据库使用数据库连接池技术,原理是在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个;连接的最大使用次数、最大空闲时间等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等

2.2 连接方式

2.2.1常用的连接方式

from sqlalchemy import create_engine
​
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8', echo=True)

2.2.2 完整的连接方式

from sqlalchemy import create_engine
​
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8', echo=True, pool_size=5, max_overflow=4, pool_recyle=7200, pool_timeout=30)

2.3 连接参数说明

mysql+pymysql://root:123456@localhost:3306/test?charset=utf8:mysql是指明数据库系统类型,pymysql是连接数据库接口的模块,root是数据库系统用户名,123456是数据库系统密码,localhost:3306是主机地址(因为是本地数据库,所以为localhost)和数据库服务端口,test是所使用的的数据库名称

echo=True:用于显示SQLAlchemy在操作数据库时所执行的SQL语句情况。简单来说,如果其值为True,执行的SQL语句会在控制台被打印出来;如果其值为False,则执行的SQL语句不在终端进行打印

pool_size:连接池的大小,默认值是5,代表连接池本身可以创建的最大连接数。可根据实际情况进行调整。

max_overflow:超过连接池大小以外最多可以创建的连接数,默认值为10。当pool_size<连接数目<max_overflow时,超过pool_size的部分可以正常练级恩访问。在使用过后,超过部分不会放在连接池中,而是被真正关闭。举个例子, 比如pool_size的值为5, max_overflow的值为10, 连接数只要不大于5+10=15就可以。当连接数为8时,拆过的3个连接使用过会被真正关闭。

pool_recyle:连接重置周期,默认为-1,推荐设置为7200.即如果连接已空闲7200秒,就自动重新获取,以防止连接被关闭。

pool_timeout:连接超时时间,默认为30秒,超过时间的连接都会连接失败。

?charset=utf8:对数据库进行编码设置,能对数据库进行中文读写。如果不设置,在进行数据添加、修改和更新时,就会提示编码错误。

2.4 其他数据库的连接方式

Microsoft SQL Sever:

mssql+pymssql://username@password@ip:port//dbname

MySQL:

mysql+pymysql://username@password@ip:port//dbname

Oracle:

cx_Oracle://username@password@ip:port//dbname

PostgreSQL:

postgresql://username@password@ip:port//dbname

SQLite:

sqlite://file_path
转载自:https://juejin.cn/post/7013928170587947022
评论
请登录