3.8 定义第一个模型类以及反向生成

新建一个模块model,用于存储数据库表对应的业务模型,在编写model层的模型时,一定要忘记数据库表,重点要放在业务模型的抽象中来

  • sqlalchemy 是一个类库,用于根据定义的model反向生成数据库表

  • Flask_SqlAlchemy 是Flask在sqlalchemy基础上封装的一个组件。提供了更加人性化的API来操作数据库

  • pipenv 按照 pipenv install flask-sqlalchemy

    image.png

1.编写模型类

from sqlalchemy import Column,Integer,String


class Book():
    id = Column(Integer, primary_key=True, autoincrement=True)
    title = Column(String(50), nullable=True)
    author = Column(String(30), default="未名")
    binding = Column(String(20))
    publisher = Column(String(50))
    price = Column(String(20))
    pages = Column(Integer)
    isbn = Column(String(15), nullable=True, unique=True)
    summary = Column(String(1000))
    image = Column(String(50))

2.将模型映射到数据库中

1.在模型类中引入Flask_SqlAlchemy,并做相关声明

app/models/book.py

2.在app中插入Flask_SqlAlchemy对象

app/__init__.py

3.书写配置文件

app/secure.py

cysql驱动需要安装

上面的操作完成以后启动项目,会报如下错误

这是因为在Flask中,不是实例化了app核心对象,其他的代码就可以直接用到。所以在上面第二部create_all()方法中,应该将app传入

通过以上修改后,数据库中成功生成了数据库表

Last updated

Was this helpful?