Python DB API规范
image.png
这个规范给我们提供来数据库对象连接,对象交互和异常处理的方式,为各种DBMS提供来统一的访问接口。
使用Python对DBMS进行操作
需要经过下面的步骤:
- 引入API模块;
- 与数据库建立连接;
- 执行SQL语句;
- 关闭数据库连接;
# -*- coding: UTF-8 -*-
import mysql.connector
# 打开数据库连接
db = mysql.connector.connect(
host="localhost",
user="root",
passwd="XXX", # 写上你的数据库密码
database='wucai',
auth_plugin='mysql_native_password'
)
# 获取操作游标
cursor = db.cursor()
# 执行SQL语句
cursor.execute("SELECT VERSION()")
# 获取一条数据
data = cursor.fetchone()
print("MySQL版本: %s " % data)
# 关闭游标&数据库连接
cursor.close()
db.close()
对数据库的当前连接操作:
- 通过指定host,user,passwd和port等参数来创建数据库连接;
- 使用db.close()关闭数据库连接;
- 使用db.cursor()创建游标,操作数据库中的数据;
- 使用db.begin()开启事务;
- 使用db.commit()和db.rollback(),对事务进行提交和回滚;
通过cursor = db.cursor()创建游标后,可以对数据库中的数据进行操作:
- 使用cursor.execute(query_sql),执行数据库查询;
- 使用cursor.fetchone(),读取数据集中的一条数据;
- 使用cursor.fetchall(),取出数据集中的所有行,返回一个元组类型数据;
- 使用cursor.fetchmany(),取出数据集中的多条数据,返回一个元组类型数据;
- 使用cursor.rowcount,返回查询结果集中的行数。如果没有查询到数据或者还没有查询,结果为-1;
- 使用cursor.close(),关闭游标
import traceback
try:
sql = "INSERT INTO player (team_id, player_name, height) VALUES (%s, %s, %s)"
val = (1003, "约翰-科林斯", 2.08)
cursor.execute(sql, val)
db.commit()
print(cursor.rowcount, "记录插入成功。")
except Exception as e:
# 打印异常信息
traceback.print_exc()
# 回滚
db.rollback()
finally:
# 关闭数据库连接
db.close()
ORM框架
ORM的英文是Object Relation Mapping,中文叫做对象关系映射。采用ORM,可以从数据库的设计层面转化成面向对象的思维。
image.png
三种主流的ORM框架:
- Django,它是Python的WEB应用开发框架。Django采用了MTV的框架模式,包括Model(模型),View(视图),Template(模版)。Model模型只是Django的一部分,可以通过它来实现数据库的增删改查;
- SQLALchemy,它提供了SQL工具包以及ORM工具,支持ORM和原生SQL两种方式;
- peewee,一个轻量型的ORM框架,简单易用。peewee采用了Model类,Field实例和Model实例来与数据库建立映射关系。