博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask开发之创建数据模型和表
阅读量:4115 次
发布时间:2019-05-25

本文共 1620 字,大约阅读时间需要 5 分钟。

一、定义数据模型 models

SQLAlchemy 允许我们根据数据库的表结构来创建数据模型, 反之亦可. 所以我们一般无须手动的登录到数据库中使用 SQL 语句来创建表, 我们只需把数据模型定义好了之后, 表结构也就有了.
首先要初始化 SQLAlchemy, 在 models.py 中把 app 对象 传入 SQLAlchemy : 
#encoding:utf-8from flask_sqlalchemy import SQLAlchemy# SQLAlchemy 会自动的从 app 对象中的 DevConfig 中加载连接数据库的配置项db = SQLAlchemy()
db 是 class SQLAlchemy 的实例化对象, 包含了 SQLAlchemy 对数据库操作的支持类集.
接下来, 我们就可以在 models.py 中定义 models 类了:
#encoding: utf-8from exts import dbclass User(db.Model):    __tablename__='user'    id = db.Column(db.Integer,primary_key=True,autoincrement=True)    telephone = db.Column(db.String(11),nullable=False)    username = db.Column(db.String(50),nullable=False)    password = db.Column(db.String(100),nullable=False)

这样我们就得到了一个 User models, 该模型是基于 user 表的. 该数据表拥有 4 个字段 id/telephone/username/password 对应这由 class db.Column 实例化出来的 4 个对象, 当 class User 继承自 db.Model 时, SQLAlchemy 与 数据库的连接通过就已经自动的 Ready 了.db.Column: 其构造器的第一个参数是可选的, 如果传入实参时, 表示创建的字段名. 反之, 则默认使用该实例化对象的名字(即 User 的类属性名); 第二个参数指定了字段的数据类型.

然后在manger.py中导入User模型

#encoding:utf-8from flask_script import Managerfrom flask_migrate import Migrate,MigrateCommandfrom demo import appfrom exts import dbfrom models import Usermanager= Manager(app)#使用Migrate绑定app和dbmigrate = Migrate(app,db)#添加迁移脚本的命令到manager中manager.add_command('db',MigrateCommand)if __name__ == '__main__':    manager.run()

MigarateCommand会去读取当前导入的模型User并映射到数据库中

最后进入当前项目所在目录:

先初始化当前的数据库环境

python manage.py db init
这时候项目会多出一个migrations文件夹

初始化当前项目的一个迁移环境

python manage.py db migrate

然后

python manage.py db upgrade
这样我们数据库里面就已经创建好User表了,进入数据库进行查看

mysql -u root -p

use db_demo

show tables

desc user

就可以看到我们已经创建好的User表的结构了

转载地址:http://ytwpi.baihongyu.com/

你可能感兴趣的文章
VUe+webpack构建单页router应用(一)
查看>>
Node.js-模块和包
查看>>
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
OpenCV meanshift目标跟踪总结
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
听说玩这些游戏能提升编程能力?
查看>>
如果你还不了解 RTC,那我强烈建议你看看这个!
查看>>
沙雕程序员在无聊的时候,都搞出了哪些好玩的小玩意...
查看>>
Mysql复制表以及复制数据库
查看>>
Kafka
查看>>
9.1 为我们的角色划分权限
查看>>
维吉尼亚之加解密及破解
查看>>
TCP/IP协议三次握手与四次握手流程解析
查看>>
PHP 扩展开发 : 编写一个hello world !
查看>>