关于python:Python与SQLAlchemy轻松管理数据库

38次阅读

共计 2684 个字符,预计需要花费 7 分钟才能阅读完成。

在这篇文章中,咱们将学习如何应用 Python 和 SQLAlchemy 库来轻松治理数据库。SQLAlchemy 是一个弱小的 ORM(对象关系映射)库,它容许您通过 Python 代码与关系型数据库进行交互,而无需编写 SQL 语句。

一、装置 SQLAlchemy

首先,确保您曾经装置了 Python。而后,应用以下命令装置 SQLAlchemy 库:

pip install sqlalchemy

二、创立数据模型

在开始应用 SQLAlchemy 之前,咱们须要创立一个数据模型来示意咱们的数据。例如,假如咱们有一个简略的应用程序,须要存储用户信息。咱们能够创立一个 User 类来示意用户数据:

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
    email = Column(String)

这里,咱们首先从 SQLAlchemy 中导入所需的类和函数,而后创立一个 User 类,它继承自Base。咱们定义了一个表名users,以及示意用户数据的列。

三、设置数据库连贯

接下来,咱们须要设置一个数据库连贯。在这个例子中,咱们将应用 SQLite 数据库,但 SQLAlchemy 反对多种数据库系统。创立一个名为 database.py 的文件,并增加以下代码来设置数据库连贯:

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

from model import Base, User

DATABASE_URL = 'sqlite:///users.db'

engine = create_engine(DATABASE_URL)
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

这里,咱们导入了之前创立的 User 类以及一些其余 SQLAlchemy 组件。咱们指定了一个 SQLite 数据库文件 users.db,而后创立了一个连贯引擎。咱们还创立了一个Session 类,用于与数据库进行交互。

四、CRUD 操作

当初咱们曾经设置好了数据库连贯,咱们能够执行一些根本的 CRUD 操作。以下是一些示例:

  • 创立(Create)

    要增加新用户,咱们能够创立一个新的 User 对象,而后将其增加到会话中:

    new_user = User(name='John Doe', age=30, email='john.doe@example.com')
    session.add(new_user)
    session.commit()
  • 读取(Read)

    若要从数据库中查问用户,咱们能够应用 session.query() 办法:

    users = session.query(User).all()
    for user in users:
        print(user.name, user.age, user.email)
  • 更新(Update)

    若要更新现有用户的信息,咱们能够查问用户,批改属性,而后提交更改:

    user = session.query(User).filter(User.email == 'john.doe@example.com').first()
    if user:
        user.age = 31
        session.commit()
  • 删除(Delete)

    若要从数据库中删除用户,咱们能够查问用户,而后将其从会话中删除:

    user = session.query(User).filter(User.email == 'john.doe@example.com').first()
    if user:
        session.delete(user)
        session.commit()

五、关联和外键

SQLAlchemy 还反对表之间的关联和外键。例如,假如咱们的应用程序还须要存储订单信息。咱们能够创立一个 Order 类,并将其与 User 类关联:

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Order(Base):
    __tablename__ = 'orders'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    product_name = Column(String)
    price = Column(Integer)

    user = relationship("User", back_populates="orders")

User.orders = relationship("Order", back_populates="user")

这里,咱们创立了一个新的 Order 类,并定义了一个外键 user_id,它援用了users 表的 id 列。咱们还定义了一个 user 关系,用于拜访与订单关联的用户。在 User 类中,咱们增加了一个 orders 关系,用于拜访与用户关联的所有订单。

当初,咱们能够轻松地查问和治理用户及其订单:

# 创立一个新订单
order = Order(product_name='Laptop', price=1000, user=user)
session.add(order)
session.commit()

# 查问用户的所有订单
orders = session.query(Order).filter(Order.user_id == user.id).all()
for order in orders:
    print(order.product_name, order.price)

# 查问与订单关联的用户
order_user = session.query(User).filter(User.id == order.user_id).first()
print(order_user.name)

通过应用 SQLAlchemy,咱们能够轻松地治理和查询数据库,而无需编写 SQL 语句。它为许多不同的数据库系统提供了对立的 API,并具备许多其余高级性能,如事务和连接池。理解更多对于 SQLAlchemy 的信息,请查看官网文档。

正文完
 0