40 关系型数据库MySQL
40.1数据库编程
-
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,
-
Python2中则使用MySQLdb。
-
数据库编程流程图
-
数据库查询操作
-
数据库编程实例
40.2 对象关系映射SQLAalchemy
40.2.1 概念
- OMR,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间做一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
- SQLAalchemy是python编程语言下的一款开元软件。提供了SQL工具包及对象关系映射(ORM)工具,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型
40.2.2 安装及操作
- 安装
- 基本操作
from sqlalchemy import create_engine #导入创建搜索引擎
from sqlalchemy.ext.declarative import declarative_base #导入创建基类函数
from sqlalchemy.orm import sessionmaker #导入
from sqlalchemy import Column,Integer,String # 导入列信息,整型,浮点型
# 创建引擎
# 使用create_engine建立同数据库的连接,返回的是一个Engine实例
# 指向数据库的一些核心接口
# max_overflow=5 最大连接数为5
# echo=True可以在控制台看到操作设计的SQL语言
engine=create_engine("mysql+pymysql://root:weoopp@localhost:3306/weoopp?charset=utf8",max_overflow=5,echo=True)
# 创建session回话(用作面向对象程序和数据库之间的缓存)
#定义缓存对象
Session=sessionmaker(bind=engine)
session=Session()
#声明基类,包含ORM映射中相关的类和表的信息
Base=declarative_base()
# 基于这个基类来创建我们的自定义类,一个类就是一个数据库表
class People(Base):
__tablename__='people'
id=Column(Integer,primary_key=True)
name=Column(String(30),unique=True)
age=Column(Integer)
# 字符串友好展示
def __repr__(self):
return"<People:%s %s %s>" %(self.id,self.name,self.age)
# 检查表的存在性,如果不存在的话就会执行创建工作
Base.metadata.create_all(engine)
# 添加单条数据
new=People(name='Bob') #创建一个new对象
new.age=12 # 设置age
session.add(new) # 添加new对象
session.commit() # 提交到数据库
print("Bob add success")
# 添加多条数据
session.add_all([
People(name='Cat',age=14),
People(name='Dog',age=15)
])
session.commit()
# 查找数据
S1=(session.query(People).filter_by(name='Bob').all()) # 所有数据
S2=(session.query(People).filter_by(name='Bob').first()) #第一条数据
S3=(session.query(People).filter_by(name='Bob').one_or_none())
print(S1)
# 删除数据
S2=session.query(People).filter_by(name='Bob').first()
session.delete(S2) #删除
session.commit() #提交到数据库
print("success")