欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

(2)连接数据库:在sqlalchemy中,session用于创建程序与数据库之间的会话。所有对象的载入和保存都需要通过session对象。

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

(3)创建映射(创建表):一个映射对应着一个Python类,用来表示一个表的结构。

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

(4)添加单条数据

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

添加多条数据

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

(5)查找数据:在sqlalchemy模块中,查找数据给提供了query()的方法

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

(6)删除数据

Linux自动化运维——Python(11)(Python的数据库编程之对象关系映射SQLAalchemy)

代码实现:

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("删除成功")

 

相关标签: 运维开发