📜  SQLAlchemy教程(1)

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

SQLAlchemy教程

简介

SQLAlchemy是一个用Python编写的SQL工具包和ORM框架。它提供了一种非常直观的方式来处理关系数据。 在本教程中,我们将介绍如何使用SQLAlchemy进行数据库操作。

安装

你可以使用 pip 来安装SqlAlchemy

pip install sqlalchemy
基本使用
  • 创建连接
from sqlalchemy import create_engine

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

这里我们创建了一个到PostgreSQL数据库的连接。可以根据实际情况修改连接参数。

  • 创建表
from sqlalchemy import Table, Column, Integer, String, MetaData

metadata = MetaData()

users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('age', Integer),
)

metadata.create_all(engine)

定义了一个 users 表,包含3个字段:id, name, age。然后通过 metadata.create_all(engine) 来创建表。

  • 插入数据
from sqlalchemy import insert

conn = engine.connect()

ins = users.insert().values(name='Tom', age=18)
result = conn.execute(ins)

通过 users.insert().values() 来定义插入的数据,然后通过 conn.execute() 来执行插入操作。

  • 查询数据
from sqlalchemy.sql import select

s = select([users])
result = conn.execute(s)

for row in result:
    print(row)

通过 select() 函数来实现查询操作。

  • 更新数据
from sqlalchemy import update

u = update(users).where(users.c.id == 1).values(name='Jerry', age=20)
result = conn.execute(u)

通过 update() 函数来更新数据,其中 where() 函数用来设置条件。

  • 删除数据
from sqlalchemy import delete

d = delete(users).where(users.c.id == 1)
result = conn.execute(d)

通过 delete() 函数来删除数据,其中 where() 函数用来设置条件。

到此为止,你应该已经掌握了SQLAlchemy的基本使用。若需要更详细的内容,请参考官方文档。

ORM框架

ORM(Object Relational Mapper)是一种将关系数据转化为对象的技术。SQLAlchemy也提供了一套强大的ORM框架。

  • 定义模型类
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)

我们定义了一个 User 类,继承自 declarative_base(),然后定义了 id, name, age 3个属性,分别对应数据库表中的3个字段。通过 __tablename__ 属性来指定表名。

  • 插入数据
from sqlalchemy.orm import sessionmaker

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

user = User(name='Tom', age=18)
session.add(user)
session.commit()

通过 sessionmaker 来创建一个 Session ,并将其绑定到数据库引擎上。通过 session.add() 函数来添加数据,然后通过 session.commit() 来提交事务。

  • 查询数据
users = session.query(User).all()

for user in users:
    print(user.id, user.name, user.age)

通过 session.query(User) 函数来查询 User 类中的数据。

  • 更新数据
user = session.query(User).filter_by(id=1).first()
user.name = 'Jerry'
user.age = 20
session.commit()

通过 session.query() 函数来查询数据,然后直接对对象的属性进行修改,最后通过 session.commit() 来提交事务。

  • 删除数据
user = session.query(User).filter_by(id=1).first()
session.delete(user)
session.commit()

通过 session.query() 函数来查询数据,然后通过 session.delete() 函数来删除数据,最后通过 session.commit() 来提交事务。

到此为止,你应该已经掌握了SQLAlchemy ORM框架的基本使用。若需要更详细的内容,请参考官方文档。