📜  Python数据持久性-SQLAlchemy(1)

📅  最后修改于: 2023-12-03 15:34:30.014000             🧑  作者: Mango

Python数据持久性-SQLAlchemy

什么是SQLAlchemy?

SQLAlchemy是一个Python的SQL工具,它为应用程序提供了SQL数据持久性和查询服务。它提供了一系列的基于ORM的接口,可以通过Python class和SQL语句进行SQL操作。它可以方便地管理数据表,建立关系,并支持多种数据库管理系统。同时,它还提供了Python风格的数据库访问,简洁而强大,灵活性非常高。

SQLAlchemy的核心组件

SQLAlchemy的核心组件包括三部分:Engine、ORM和Schema。

  • Engine 负责连接数据库,执行sql语句
  • ORM 提供面向对象的封装,把数据库操作转换为Python对象的操作
  • Schema 提供把对象映射为数据库中的表的功能
安装SQLAlchemy

SQLAlchemy可以通过pip进行安装:

pip install SQLAlchemy
连接到数据库

使用SQLAlchemy连接到数据库,需要创建一个engine对象来连接到一个数据库。engine对象是由数据库URL构建而成,它包括了数据库连接的所有参数,如用户名、密码、主机、端口和数据库名等等。

from sqlalchemy import create_engine

engine = create_engine('postgresql://user:password@localhost/mydatabase')

定义ORM对象

定义ORM对象来映射数据库表,需要使用SQLAlchemy提供的declarative_base,并通过继承它来创建映射类。类属性是声明在表中的列,也可以定义表关联的外键等。

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
创建Session对象

在SQLAlchemy中,使用Session来操作数据库。Session是一个接口,封装了ORM对象和数据库之间的交互。Session对象拥有添加(add)、删除(delete)、更改(update)和查询(query)等方法。

Session对象可以通过sessionmaker()方法创建。这个方法返回一个函数对象,它可以作为一个工厂函数,用来创建Session对象。

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
增删改查
添加

通过Session的add()方法可以添加一个对象到数据库中。

session = Session()

new_user = User(name='John')

session.add(new_user)

session.commit()
删除

通过Session的delete()方法可以删除一个对象。

session = Session()

user_to_delete = session.query(User).filter_by(name='John').one()
session.delete(user_to_delete)

session.commit()
更新

通过Session的update()方法可以更新一个对象。

session = Session()

user_to_update = session.query(User).filter_by(name='John').one()

user_to_update.name = 'Tom'

session.commit()
查询

通过Session的query()方法可以查询一个对象。

session = Session()

for user in session.query(User).filter(User.age > 20):
    print(user.name, user.age)
总结

SQLAlchemy提供了丰富的ORM接口,可以对Python对象进行SQL操作,使用起来非常灵活和方便。我们可以通过定义ORM对象、创建Session对象、操作数据库等工作,轻松地完成SQL数据库的管理。