Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)
程序员文章站
2022-03-04 12:59:09
...
1.什么是ORM
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。
2.SQLAlchemy
SQLAlchemy是Python编程语言下的一款开源软件。提供了SQL工具包及对象关系映射(ORM)工具,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。
3.基本操作
(1)安装sqlalchemy
(2)连接数据库:在sqlalchemy中,session用于创建程序与数据库之间的会话。所有对象的载入和保存都需要通过session对象。
(3)创建映射(创建表):一个映射对应着一个Python类,用来表示一个表的结构。
(4)添加单条数据
添加多条数据
(5)查找数据:在sqlalchemy模块中,查找数据给提供了query()的方法
(6)删除数据
代码实现:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer, String
# 1. 创建引擎
engine = create_engine(
"mysql+pymysql://root:[email protected]:3306/westos?charset=utf8",
max_overflow=5,
echo=True)
# 2.创建session会话(用作面向对象程序和数据库之间的缓存)
Session = sessionmaker(bind=engine)
session = Session()
# 3. 重点: 通过面向对象的方式对数据库进行操作(增删改查)
Base = declarative_base()
class People(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
name = Column(String(30))
email = Column(String(30), unique=True)
def __repr__(self):
"""字符串的友好展示"""
return "<People: %s %s %s>" %(self.id, self.name, self.email)
# 创建数据库表
Base.metadata.create_all(engine)
"""
# 批量添加数据
for i in range(10):
p = People(name="name%s" %(i+1), email="mail%[email protected]" %(i+1))
session.add(p)
session.commit()
print("写入10条数据成功")
"""
# 查询数据信息
data = session.query(People).filter_by(name="name1").first()
print("找到name1的信息了, ", data)
# 删除找到的信息
session.delete(data)
session.commit()
print("删除成功")