数据库表结构如下:

第一种方式:
代码如下:
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操作一样啦!

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

被折叠的 条评论
为什么被折叠?



