SQLAlchemy使用指南

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: **SQLAlchemy 指南**:Python SQL 工具包,提供数据库高级抽象。安装:`pip install sqlalchemy`,加上数据库驱动(如 MySQL: `pip install mysql-connector-python`)。基础使用包括:创建数据库连接、定义模型、创建表、添加/查询/更新/删除数据。高级功能涉及关系映射、原生 SQL 语句及 SQLAlchemy Core。推荐阅读官方文档以深入了解。

SQLAlchemy使用指南

SQLAlchemy 是一个 Python SQL 工具包和 ORM 库,提供了对数据库的高级抽象和操作。

安装 SQLAlchemy

首先,确保你已经安装了 SQLAlchemy 和数据库驱动程序,例如 SQLite、PostgreSQL 或 MySQL。
这里我使用 MySQL

pip install sqlalchemy

对于具体的数据库驱动程序:

  • SQLite 已内置在 Python 中,无需额外安装。
  • PostgreSQL: pip install psycopg2-binary
  • MySQL: pip install mysql-connector-python

注意 安装 mysqlclient 对于新版本已经失效

基础使用

1. 创建数据库连接和会话

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# 创建数据库引擎
engine = create_engine('mysql+mysqlconnector://username:password@hostname/test')

# 创建会话类
Session = sessionmaker(bind=engine)
session = Session()

2. 定义模型

使用 SQLAlchemy 的 ORM 功能定义数据模型。

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

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, Sequence('user_id_seq'), primary_key=True)
    name = Column(String(50))
    email = Column(String(50))
    remark = Column(String(50))

    def __repr__(self):
        return f"<User(name='{self.name}', email='{self.email}', remark='{self.remark}')>"

3. 创建数据库表

Base.metadata.create_all(engine)

4. 添加数据

# 创建一个新的用户实例
new_user = User(name='Jack', email='Jack@gmail.com', remark='Jack')

# 添加并提交
session.add(new_user)
session.commit()

5. 查询数据

# 查询所有用户
users = session.query(User).all()
for user in users:
    print(user)

# 查询特定用户
user = session.query(User).filter_by(name='Jack').first()
print(user)

6. 更新数据

user = session.query(User).filter_by(name='Jack').first()
user.remark = 'update'
session.commit()

7. 删除数据

user = session.query(User).filter_by(name='Jack').first()
session.delete(user)
session.commit()

高级功能

1. 关系(Relationships)

使用 relationship 定义表之间的关系。

from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship

class Address(Base):
    __tablename__ = 'addresses'
    id = Column(Integer, primary_key=True)
    address = Column(String, nullable=False)
    user_id = Column(Integer, ForeignKey('users.id'))

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

User.addresses = relationship("Address", order_by=Address.id, back_populates="user")

2. 执行原生 SQL 语句

你可以直接执行原生 SQL 语句。

result = engine.execute("SELECT * FROM users")
for row in result:
    print(row)

3. 使用 SQLAlchemy Core (核心)

SQLAlchemy Core 提供了更接近 SQL 的抽象层,可以使用 TableColumn 对象进行操作。

from sqlalchemy import Table, MetaData

metadata = MetaData()
users_table = Table('users', metadata, autoload_with=engine)

# 插入数据
engine.execute(users_table.insert(), {
   "name": "Jack", "email": "Jack@gmail.com", "remark": "insert"})

# 查询数据
result = engine.execute(users_table.select())
for row in result:
    print(row)

小结

SQLAlchemy 提供了灵活而强大的工具来处理数据库操作,从简单的 ORM 映射到复杂的 SQL 查询都能轻松应对。使用 SQLAlchemy 可以大大简化数据库操作的代码,提高代码的可维护性和可读性。

强烈推荐阅读:SQLAlchemy 文档

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
3月前
|
弹性计算 关系型数据库 数据库
阿里云服务器免费试用相关政策介绍:试用资格、规则与优惠解析
阿里云服务器可以试用吗?不仅是云服务器产品,包括无影云电脑、云数据库 RDS、统型负载均衡 CLB、对象存储 OSS、文件存储 NAS等云产品都是可以试用的。本文将系统梳理阿里云服务器试用的核心规则、适用场景及操作要点,以供参考。
|
SQL 存储 Go
【译】SQLAlchemy文档:SQLAlchemy 统一教程
【译】SQLAlchemy文档:SQLAlchemy 统一教程
341 1
|
JavaScript 数据库 Python
一篇文章搞懂flask_sqlalchemy常用操作
这篇文章介绍了Flask框架中SQLAlchemy库的常用操作,包括查询、删除和更新数据的方法和技巧。
658 3
|
SQL 关系型数据库 MySQL
Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
7636 0
Pandas获取SQL数据库read_sql()函数及参数一文详解+实例代码
|
12月前
|
运维 监控 负载均衡
|
SQL 自然语言处理 数据库
SqlAlchemy 2.0 中文文档(二)(3)
SqlAlchemy 2.0 中文文档(二)
244 2
|
SQL 测试技术 API
SqlAlchemy 2.0 中文文档(一)(1)
SqlAlchemy 2.0 中文文档(一)
468 1
SqlAlchemy 2.0 中文文档(一)(1)
|
SQL 关系型数据库 数据库
SqlAlchemy 2.0 中文文档(二十三)(3)
SqlAlchemy 2.0 中文文档(二十三)
394 0
|
SQL 存储 数据库
SqlAlchemy 2.0 中文文档(一)(4)
SqlAlchemy 2.0 中文文档(一)
252 1
|
SQL JSON 关系型数据库
SqlAlchemy 2.0 中文文档(二)(2)
SqlAlchemy 2.0 中文文档(二)
301 2