flask-script结合数据库使用小案例!

本文详细介绍了如何使用Flask-Script进行数据库操作,包括配置数据库、建立ORM模型、执行数据库迁移及通过命令行插入数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上节为大家讲解了flask-script如何使用?相信大家看过该文章后,使用flask-script已不是问题。下面我就结合数据库来讲讲flask-script,让大家能够深入了解flask-script用法。

注:在开始讲解之前,请确保你对ORM、数据库有一定的了解(懂的请忽略)。

首先,我们在项目下新建一个主app文件(app.py),其代码如下:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "index page"

if __name__ == '__main__':
    app.run(debug=True)

由于案例涉及到数据库,涉及到数据库哪意味着就要配置数据库相关信息?是吧??下面我们就新建一个配置文件(config.py),其代码如下:

DIALCT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "root"
HOST = "127.0.0.1"
PORT = "3306"
DATABASE = "first_sqlalchemy"
DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI

配置好数据库相关信息后,我们是不是还得建立ORM模型,然后将ORM模型映射到数据库中。为了方便管理,我们新建一个文件(models.py)用于存放模型相关代码,其代码如下所示:

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer , primary_key=True , autoincrement=True)
    name = db.Column(db.String(20) , nullable=False)
    password = db.Column(db.String(50) ,nullable=False)

配置文件、ORM文件写好后,我们是不是还得在主app文件引用它们??引用代码如下:

import config
from modles import db
app.config.from_object(config)
db.init_app(app)

主app.py完整代码如下:

from flask import Flask
import config
from modles import db

app = Flask(__name__)
app.config.from_object(config)
db.init_app(app)

@app.route("/")
def index():
    db.create_all()
    return "index page"

if __name__ == '__main__':
    app.run(debug=True)

打开mysql 命令行工具,我们查看下表中是否有user这个表。

之前创建过user这个表,我们把它删除。

删除user表后,我们再执行主app文件,如果执行没有报错,我们再查看下user表是否已成功映射到数据库中。

由上图可知,user表已成功映射到数据库中了。下面我们再创建一个manage.py文件,用与存放所有迁移脚本代码。其代码如下:

from flask_script import Manager
from app import app

manage = Manager(app)

@manage.option("-u","--username",dest="username")
@manage.option("-p","--password",dest="password")
def insert_user(username,password):
    print("username:%s,password:%s"%(username,password))


if __name__ == '__main__':
    manage.run()

打开命令行终端,输入下方命令:

python manage.py insert_user -u tom -p 19920709

运行上方命令,结果如下:

但这并不是我们想要的结果,我们想要运行上方命令后,传入的参数能够添加到user表中。

要想将传入的参数添加到user表中,我们是不是只需导入模型,然后实例化一个对象,然后再db.session.add....session.commit就可以了。是吧?

从主app文件中导入db,再从moldes文件中导入User模型,代码如下:

from app import app,db
from modles import User

然后再构建ORM对象并将其数据添加到表中,代码如下:

@manage.option("-u","--username",dest="username")
@manage.option("-p","--password",dest="password")
def insert_user(username,password):
    # print("username:%s,password:%s"%(username,password))
    user = User(name = username,password = password)
    db.session.add(user)
    db.session.commit()

在运行命令之前,我们先看看user表中是否有数据,如果没有数据我们再运行下方命令:

python manage.py insert_user -u tom -p 19920709

然后再查看user表,如果不出意外的话,结果如下所示:

通常情况下,flask-script会结合flask-migrate使用,后面我会讲解flask-migrate结合flask-script使用。大家只有熟悉了flask-script,在后面讲解flask-migrate的时候,就会变得非常轻松!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值