📅  最后修改于: 2023-12-03 15:35:06.893000             🧑  作者: Mango
SQLAlchemy ORM是一个Python库,它提供了一个对象关系映射(ORM)的实现。它的主要特点是可以与多种关系型数据库(如MySQL、SQLite、PostgreSQL等)进行交互,同时提供了方便的查询和对象访问接口。
要使用SQLAlchemy ORM,您需要先安装SQLAlchemy和相应的数据库驱动程序。例如,如果您想使用MySQL数据库,您需要安装MySQL驱动程序:
pip install SQLAlchemy mysql-connector-python
然后,您需要创建一个数据库连接,例如:
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://user:password@localhost/mydatabase')
在SQLAlchemy ORM中,模型对应于数据库中的表。您可以使用Python类来定义模型,例如:
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(50))
email = Column(String(120), unique=True)
def __repr__(self):
return f'<User {self.name}>'
在这个例子中,我们定义了一个名为User
的模型,它表示数据库中的users
表。User
类继承自declarative_base()
,这个函数返回一个基类,它定义了ORM需要的各种对象和属性。__tablename__
属性指定了表的名称,id
、name
和email
属性分别对应于表中的ID、姓名和电子邮件地址。
一旦您定义了模型,您可以使用Base.metadata.create_all(engine)
方法来创建数据库表:
Base.metadata.create_all(engine)
这个方法会自动检查模型定义并生成相应的SQL语句以创建表。
您可以使用session
对象来查询和过滤模型实例。例如,以下代码可以获取所有用户:
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
users = session.query(User).all()
上述代码使用session.query()
方法来构造查询。在这个例子中,我们查询了User
模型的所有实例,并使用all()
方法将查询结果作为列表返回。
您也可以使用一些过滤器来限制查询结果。例如,以下代码可以获取所有电子邮件地址以"example.com"结尾的用户:
users = session.query(User).filter(User.email.like('%example.com')).all()
上述代码使用filter()
方法来添加一个过滤器。在这个例子中,我们使用like()
函数来过滤电子邮件地址。
您可以使用session
对象来添加和修改模型实例。例如,以下代码可以添加一个新用户:
user = User(name='Alice', email='alice@example.com')
session.add(user)
session.commit()
上述代码创建一个名为user
的新实例,并将其添加到会话中。commit()
方法将会话中的所有更改提交到数据库中。
您也可以修改现有的模型实例。例如,以下代码可以将用户的电子邮件地址从"alice@example.com"改为"alice2@example.com":
user = session.query(User).filter_by(name='Alice').first()
user.email = 'alice2@example.com'
session.commit()
您可以使用session
对象来删除模型实例。例如,以下代码可以删除所有电子邮件地址以"example.com"结尾的用户:
session.query(User).filter(User.email.like('%example.com')).delete()
session.commit()
上述代码使用delete()
方法从数据库中删除所有满足过滤器条件的实例。
SQLAlchemy ORM是一个强大的Python ORM库,它可以大大简化与关系型数据库的交互。在本文中,我们讨论了SQLAlchemy ORM的一些基础概念,并演示了如何使用ORM来处理数据库查询、添加、修改和删除等操作。