问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

【SQLAlchemy】如何定义ORM模型并映射到数据库?

创作时间:
2025-03-18 02:18:34
作者:
@小白创作中心

【SQLAlchemy】如何定义ORM模型并映射到数据库?

引用
CSDN
1.
https://blog.csdn.net/weixin_55818116/article/details/139549336

在Python中使用SQLAlchemy进行数据库操作时,定义ORM(对象关系映射)模型是一个重要的步骤。本文将详细介绍如何使用SQLAlchemy定义ORM模型并将其映射到数据库中,包括创建基类、定义自定义类、创建属性以及建立和删除映射等关键步骤。

创建 ORM 基类

首先,我们需要使用declarative_base根据engine来创建一个 ORM 基类。

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///example.db')
Base = declarative_base()

创建自定义类

接下来,我们可以用上边定义的Base类来实现自己的 ORM 类。通过__tablename__类属性,可以指定这个模型映射到数据库中的表名。

# 继承 Base 类
class User(Base):
    # 指定映射表名
    __tablename__ = 'user'

创建属性

创建类中的属性来映射到表中的字段,所有需要映射到表中的属性都应该为Column类型。

from sqlalchemy import Column, Integer, String

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    age = Column(Integer)

建立映射

使用Base.metadata.create_all()来将模型映射到数据库中。

# 建立与数据库的映射
Base.metadata.create_all(engine)

生成的数据库表结构如下:

查看生成的 SQL 脚本:

create table user
(
    id   int auto_increment
        primary key,
    name varchar(50) null,
    age  int         null
);

删除映像

当对基类的属性进行更新时,需要重新生成数据库表,这是可以使用drop_all()

# 删除与数据库的映射
Base.metadata.drop_all(engine)

Base.metadata.drop_all(engine)的作用就是删除数据库中所有与Base相关联的表。

注意事项

  • declarative_base()函数不接受位置参数。
  • 一旦使用Base.metadata.create_all()将模型映射到数据库中后,即使改变了模型的字段,也不会重新映射了。

本文详细介绍了使用SQLAlchemy定义ORM模型并映射到数据库的基本步骤,希望对正在学习Python数据库操作的读者有所帮助。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号