版权声明:本文为博主原创文章,欢迎转载,但请注明原文出处。 https://blog.csdn.net/GiveMeFive_Y/article/details/80455978
数据库表结构如下:
第一种方式:
代码如下:
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
engine = create_engine('mysql+pymysql://root:[email protected]: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:[email protected]:3306/test > models.py
# sqlacodegen mysql+pymysql://root:[email protected]: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操作一样啦!