Python 对数据库中已存在的表作ORM操作的两种方法

本文介绍了Python中对数据库表进行ORM操作的两种方法。第一种方式直接使用ORM库,如SQLAlchemy,实现对已有表的操作。第二种方式利用sqlacodegen工具,自动生成models.py文件,简化数据库模型的创建,后续进行常规的ORM操作。
部署运行你感兴趣的模型镜像

数据库表结构如下:
table

第一种方式:

代码如下:

from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine

engine = create_engine('mysql+pymysql://root:qwer1234@127.0.0.1:3306/test')
Base = automap_base()
Base.prepare(engine, reflect=True)
db = sessionmaker(bind=engine)()
Student = Base.classes.student
ret = db.query(Student).first()
print(ret.__table__)

结果:

(Table('student', MetaData(bind=None), Column('id', BIGINT(display_width=20), table=<student>, primary_key=True, nullable=False), 
Column('name', CHAR(length=16), table=<student>),
Column('teacher_id', INTEGER(display_width=11), table=<student>), schema=None),)

第二种方式:

# pip install sqlacodegen
# sqlacodegen mysql+pymysql://root:qwer1234@127.0.0.1:3306/test > models.py

# sqlacodegen mysql+pymysql://root:qwer1234@127.0.0.1:3306/test > models.py

生成的models.py如下:

# coding: utf-8
from sqlalchemy import BIGINT, CHAR, Column, INTEGER
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata


class Student(Base):
    __tablename__ = 'student'

    id = Column(BIGINT(), primary_key=True)
    name = Column(CHAR(16))
    teacher_id = Column(INTEGER())


class Teacher(Base):
    __tablename__ = 'teacher'

    id = Column(BIGINT(), primary_key=True)
    name = Column(CHAR(16))
    phone = Column(CHAR(16))

接下来就跟正常的ORM操作一样啦!

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值