zoukankan      html  css  js  c++  java
  • Flask与Mysql数据库建立连接

    该开始学习Flask,接触到数据库方面,记录一点儿笔记,希望有用。

    环境:python3.7.7,flask1.1.2

    与数据库建立联系,需要在自己的虚拟环境中pip install :flask-script,pymysql,flask-sqlalchemy,flask-imgrate(4个库)

    1.Flask-Script扩展提供向Flask插入外部脚本的功能,内置命令shell和runserver,也可以自定义。在Flask工程中,当在app.py文件中创建好app对象后,要用manager来包裹:

    #app.py文件
    from flask_script import Manager
    manager=Manager(app=app)#创建app对象后,用manager包裹
    manager.run()#在main函数中,运行程序

    2.flask-sqlalchemy提供了SQL工具包及对象关系映射(ORM)工具

    #1.在settings.py文件中配置
    SQLALCHEMY_DATABASE_URI='mysql+pymysql://root:root@127.0.0.1:3306/flaskday05'#访问的数据库+用的驱动://数据库的用户名:密码@服务器地址:端口号/数据库
    SQLALCHEMY_TRACK_MODIFICATIONS=False
    SQLALCHEMY_ECHO=True#调试模式
    #2.在exts包的__init__.py文件中引入外部工具包
    from flask_sqlalchemy import SQLAlchemy
    db=SQLAlchemy()#创建了db数据库对象
    #3.在总蓝图apps的__init__.py文件中将db对象与app对象关联起来
    from exts import db
    db.init_app(app=app)

    3.flask-migrate是一个为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作。

    #在app.py文件中,当创建完app对象之后
    from flask_migrate import Migrate, MigrateCommand
    migrate=Migrate(app=app,db=db)#建立app影响数据库的映射
    manager.add_command('db',MigrateCommand)#将命令交给manager管理

    4.在各蓝图中创建模型(类)时,要用到db的model

    #在model.py文件中
    from exts import db
    class User(db.Model):

    5.将创建好的模型(自定义的类)导入到app.py文件中

    from apps.user.models import User

    6.使用terminal运行pytho:

    初始化(一个项目只需要初始化一次,用来生成migrations文件夹)python app.py db init

    更新版本(每次修改后要运行,用来在versions文件中生成最新的版本py文件)python app.py db migrate

    数据库同步(每次修改要运行,用来将最新版本的内容更新到数据库上)python app.py db upgrade

    删除时:python app.py db downgrate 并删除版本文件

    Flask-Bootstrap是一个简化在Flask项目中集成前端开源框架Bootstrap过程的Flask扩展。使用Bootstrap可以快速的创建简洁、美观又功能全面的页面。
    pip install flask-bbotstrap
    内置的block
    {% block title%}首页{%endblock}
    {% block navbar%}{%endblock}
    {% block content%}{%endblock}
    {% block styles%}{%endblock}
    {% block scripts%}{%endblock}
    {% block head%}{%endblock}
    {% block body%}{%endblock}

  • 相关阅读:
    webpack学习之——模块(Modules)
    dns-prefetch对网站速度能提升有多少?详解dns-prefetch。
    类数组对象汇总
    HTML input type=file文件选择表单的汇总(二)
    238. 除自身以外数组的乘积
    1029.两地调度
    滑动窗口:无重复字符的最长子串
    统计网格中的矩形以及正方形
    关于正负数的二进制新发现以及求法
    基础练习: 矩阵乘法
  • 原文地址:https://www.cnblogs.com/Turing-dz/p/13170115.html
Copyright © 2011-2022 走看看