首页 技术 正文
技术 2022年11月18日
0 收藏 519 点赞 4,974 浏览 4540 个字

1.首先创建app文件夹

同django 创建app 一样 创建文件

SQLAlchemy 应用创建

在创建的views中写入两个蓝图函数为了操作数据库的增删改查

acc.py

from flask import Blueprintacc = Blueprint("acc",__name__)@acc.route("/acc")
def acc_func():
return "这是acc蓝图页面"

在__init__.py下写入create_app()函数

from flask import Flask
from app.views.acc import acc
from app.views.user import user
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
session=db.session
def create_app(): my_app =Flask(__name__) my_app.register_blueprint(acc)
my_app.register_blueprint(user) return my_appif __name__ == '__main__':
app=create_app()
app.run()

若运行成功,就完成重要的第一步了

第二步创建数据库表名

在models.py 内创建数据

from app import dbclass User(db.Model):    __tablename__ ="user"
__table_args__ = {"useexisting":True} id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(32))if __name__ == '__main__':
from app import create_app
my_app = create_app() db.drop_all(app=my_app)
db.create_all(app=my_app)

观察发现没有engine可以连接数据库

解决 :在__init__下写为

from flask import Flask
from app.views.acc import acc
from app.views.user import user
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
session=db.session
def create_app(): my_app =Flask(__name__) my_app.config["SQLALCHEMY_DATABASE_URI"]="mysql+pymysql://root:@127.0.0.1:3306/day128?charset=utf8"
# SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
my_app.config["SQLALCHEMY_POOL_SIZE"] = 5
# SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
my_app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
my_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False db.init_app(my_app)
my_app.register_blueprint(acc)
my_app.register_blueprint(user)
return my_app

db=db = SQLAlchemy()   db.model  相当于 Base()

这个时候就会发现数据库增加一张user表

第三部 进行数据的增添

在创建的user.py蓝图中,进行操作

from flask import Blueprint,jsonifyuser = Blueprint("user",__name__)@user.route("/user")def user_func():    from app.models import User
from app import db
user_obj = User(name="zq")
db.session.add(user_obj)
db.session.commit()
return "这是user蓝图"@user.route("/user_list")
def user_list():
from app.models import User res = User.query.first()
ret ={"username":res.name} return jsonify(ret)

为了仿照django,在manager.py进行启动

这里用到了装饰器

from flask_script import Manager
@manager.command
 
import MyApp
# 导入 Flask-Script 中的 Manager
from flask_script import Managerapp = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app)if __name__ == '__main__':
#app.run()
# 替换原有的app.run(),然后大功告成了
manager.run()MyApp/manager.py
Manager的两种用法
@manager.command
def runflask():
my_app.run()
return "成功"
#第一种就是通过终端启动程序,输入python manager.py runflask
#即可运行经过@manager.command 装饰的函数,就这相当于在终端启动了程序
同django的python manager.py runserver@manager.option("-n","--name",dest="name")
def run_flask(name="127.0.0.7",say=""):
a=input("真的启动me?")
if a=='y':
my_app.run(name,int(say))
else:
return f"{name}真{say}"#第二种装饰器@manager.opation("-短指令","--长指令",dest="变量名")
# 输入python manager.py run_flask即可以进行传参的装饰器
如下详解
@manager.option("-n","--name",dest="name")
 
import MyApp
# 导入 Flask-Script 中的 Manager
from flask_script import Managerapp = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app) # type:Manager@manager.command
def DragonFire(arg):
print(arg)@manager.option("-n","--name",dest="name")
@manager.option("-s","--say",dest="say")
def talk(name,say):
print(f"{name}你可真{say}")if __name__ == '__main__':
#app.run()
# 替换原有的app.run(),然后大功告成了
manager.run()MyApp/manager.py

SQLAlchemy 应用创建

通过上述例子了解到可以进行 my_app.run(name,int(say))

前后输入 “127.0.0.1” 5000 即可

第四步 Migrate进行数据库迁移

在manager.py引用

from flask_migrate import Migrate,MigrateCommand举例
import MyApp
# 导入 Flask-Script 中的 Manager
from flask_script import Manager# 导入 Flask-Migrate 中的 Migrate 和 MigrateCommand
# 这两个东西说白了就是想在 Flask-Script 中添加几个命令和指令而已
from flask_migrate import Migrate,MigrateCommandapp = MyApp.create_app()
# 让app支持 Manager
manager = Manager(app) # type:Manager# Migrate 既然是数据库迁移,那么就得告诉他数据库在哪里
# 并且告诉他要支持那个app
Migrate(app,MyApp.db)
# 现在就要告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢
manager.add_command("db",MigrateCommand) # 当你的命令中出现 db 指令,则去MigrateCommand中寻找对应关系
"""
数据库迁移指令:
python manager.py db init
python manager.py db migrate # Django中的 makemigration
python manager.py db upgrade # Django中的 migrate
"""@manager.command
def DragonFire(arg):
print(arg)@manager.option("-n","--name",dest="name")
@manager.option("-s","--say",dest="say")
def talk(name,say):
print(f"{name}你可真{say}")if __name__ == '__main__':
#app.run()
# 替换原有的app.run(),然后大功告成了
manager.run()MyApp/manager.py

我的manage.py

import app
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommandmy_app = app.create_app()
manager=Manager(my_app)from app import db
Migrate(my_app,db)manager.add_command("database",MigrateCommand)@manager.command
def runflask():
my_app.run()
return "成功"@manager.option("-n","--name",dest="name")
def run_flask(name="127.0.0.7",say=""):
a=input("真的启动me?")
if a=='y':
my_app.run(name,int(say))
else:
return f"{name}真{say}"if __name__ == '__main__':
manager.run()

在终端输入

python manager.py database init
python manager.py database migrate
python manager.py database migrated
就创建完成了
下一篇: index.jsp
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,816
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,899