1、SQLAlchemy

参考:https://zhuanlan.zhihu.com/p/265224273
(1)有什么用:python连接关系型数据库的工具;
(2)怎么用:可以去执行原生sql,也可以用ORM去执行增删改查对应的方法;

2、数据库驱动

数据库驱动:就是具体的数据库厂商提供的数据库服务的连接工具。我们需要把数据包装成数据库需要的数据格式,或者获取到的数据库数据我们需要解析,那么就需要用到这个数据库驱动程序。

3、SQLAlchemy和数据库驱动的关系

SQLAlchemy 使用方言 Dialect 与各种类型的数据库进行通信,每种数据库都有对应的 DBAPI,所有方言都要求安装对应的 DBAPI 驱动程序。 SQLAlchemy 根据配置的方言 Dialect 不同调用不同的数据库 DBAPI,从而实现对数据库的操作。
也就是说,要用SQLAlchemy操作数据库,需要安装SQLAlchemy和对应的数据库驱动程序,然后就能用统一的ORM执行相应的操作,即使数据库改变了,程序也不需要变动,只需要更改与数据库的连接方式;

4、使用SQLAlchemy的好处

使用SQLAlchemy的好处有以下几点:
避免 SQL 注入攻击:SQLAlchemy 的 ORM 功能可以自动过滤掉用户输入的恶意代码,避免 SQL 注入攻击。
跨数据库支持:SQLAlchemy 可以支持多种数据库,包括 MySQL,PostgreSQL,Oracle,Microsoft SQL Server,SQLite 等,可以在不同的数据库之间无缝切换
数据库访问方便:SQLAlchemy 提供了强大的查询语句构建功能,可以使用 Python 代码来构建 SQL 查询语句,使得数据库访问更加方便

5、案例

举例1,使用SQLAlchemy去连接mysql数据库

(1)常见的mysql的python驱动程序有:pymysql,mysql-connector-python,pyodbc等;
(2)使用SQLAlchemy+mysql-connector去连接和操作数据:

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
#创建数据库连接
engine = create_engine(‘mysql+mysqlconnector://username:password@host:port/database’)
#定义数据表结构
metadata = MetaData()
users = Table(‘users’, metadata,
Column(‘id’, Integer, primary_key=True),
Column(‘name’, String(50)),
Column(‘email’, String(50))
)
#插入数据
conn = engine.connect()
conn.execute(users.insert().values(name=‘Alice’, email=‘alice@example.com’))
#查询数据
result = conn.execute(users.select())
for row in result:
print(row)
#关闭连接
conn.close()

(3)使用SQLAlchemy+pymysql去连接和操作数据:

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
#创建数据库连接
engine = create_engine(‘mysql+pymysql://username:password@host:port/database’)
#其它操作与上一致

举例2,使用SQLAlchemy去连接oracle数据库

(1)oracle对应的python驱动有:cx_Oracle;
(2)使用SQLAlchemy+cx_Oracle去连接和操作数据:

#创建数据库连接
engine = create_engine(‘oracle+cx_oracle://username:password@host:port/?service_name=database’)
#其它操作与上一致

6、SQLAlchemy连接高斯DB(OpenGauss)

从上述介绍可以知道,我们使用SQLAlchemy去连接高斯DB,首先要知道高斯DB(OpenGauss)对应的驱动程序是什么,SQLAlchemy是否支持该驱动程序;

扩展:高斯DB和OpenGauss都是由华为开发的关系型数据库管理系统。它们都具有高可靠、高性能、高扩展性等特点,同时支持SQL和PL/SQL编程语言。
不同之处在于,高斯DB是华为自主研发的数据库产品,主要用于企业级应用场景,如金融、电信、政务等领域,提供了分布式、高可用、强安全性等特性。而OpenGauss是基于高斯DB开源的数据库产品,旨在为开发者提供高性能、高可靠、易部署、易管理的数据库服务。同时,OpenGauss也支持了更多的开源特性,如PostgreSQL兼容性、开源社区等。

我们现在要让SQLAlchemy去连接OpenGauss,OpenGauss对应的驱动程序是psycopg2,需要先安装psycopg2包,可以安装psycopg2-binary,更简单、方便(pip install psycopg2-binary)。

扩展:psycopg2 和 psycopg2-binary 都是用于 Python 和 PostgreSQL 数据库交互的适配器,不同之处在于它们的安装方式和二进制文件的不同。
psycopg2 是一个纯 Python 实现的适配器,需要通过源代码进行编译安装。这意味着您需要在安装之前安装一些编译依赖项(如libpq-dev),并且安装可能需要一些时间。但是,psycopg2 可以在各种操作系统上运行,包括 Windows、Linux 和 macOS。
而 psycopg2-binary 是一个预编译的二进制文件,可以直接通过 pip 工具进行安装,无需进行编译。这使得安装速度更快,因为它不需要编译过程。但是,psycopg2-binary 只适用于特定的操作系统和Python版本,因此您需要确保选择与您的操作系统和Python版本兼容的适配器版本。

#创建数据库连接
engine = create_engine(‘postgresql://username:password@host:port/database’)

扩展:如果仅仅使用psycopg2去连接OpenGauss,可以参考:此处

更多推荐