zoukankan      html  css  js  c++  java
  • Flask 数据库连接

    Flask拥有丰富的扩展组件,数据库管理方面Flask-SQLAlchemy简化了数据库管理的操作。SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台。其不但提供了高层ORM,而且也提供了使用数据库原生SQL的底层功能。和其他大多数扩展一样,Flask-SQLAlchemy也使用pip安装:

    pip install flask-sqlalchemy
    

    在Flask中连接MySQL时出现ModuleNotFoundError: No module named 'MySQLdb'错误,只要在配置SQLALCHEMY_DATABASE_URI时,加上一个pymysql就可以了:
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/数据库名?charset=utf8mb4'
    ,当然,前提是要已经安装了pymysql,如果没有装pymysql,是会报ModuleNotFoundError: No module named 'pymysql'错误的,

    安装命令:

    pip install pymysql
    

    在利用Flask实现研究课题相关系统时,涉及到数据库相关操作。由于使用Python3开发语言,python3中已经不再支持MySQLdb模块,所以这里使用pymysql数据库连接组件,安装pymysql:

    pip install pymysql
    

    数据库连接:

    from flask_sqlalchemy import SQLAlchemy
    配置数据库连接
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@localhost:3306/数据库名?charset=utf8mb4'
    app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
    db = SQLAlchemy(app)
    
    

    当建立model.py文件后,一般需要引入,这个位置很关键要放在db创建的下面,db,creat_all()前面。

    下面是我的一些初始化配置文件 init.py
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    import os
    
    # 快速定位文件位置
    basedir = os.path.abspath(os.path.dirname(__file__))
    
    # 创建项目对象
    app = Flask(__name__)
    
    # SQLALCHEMY_DATABASE_URI:用于连接数据库
    # mysql://username:password@hostname/database?编码
    app.config['SQLALCHEMY_DATABASE_URI'] = 
        "mysql+pymysql://root:root@localhost:3306/html_db?charset=utf8mb4"
    
    # 如果设置成True(默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。
    # 这需要额外的内存, 如果不必要的可以禁用它。如果你不显示的调用它,
    # 在最新版的运行环境下,会显示警告。
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    
    app.config.from_object('html_report.setting')     # 模块下的setting文件名,不用加py后缀
    # 环境变量,指向配置文件setting的路径
    FLASKR_SETTINGS = os.path.join(basedir, "setting")
    app.config.from_envvar("FLASKR_SETTINGS", silent=True)
    
    
    db = SQLAlchemy(app)
    
    from html_report.model import user, category
    
    
    def db_init():
        db.create_all()
    
    
    db_init()
    
    setting.py文件

    对于用过Django文件的同学们,应该不陌生,这是一个各种配置信息的文件,可以把所有的配置写进去,只不过我写在了init文件中,这个看个人习惯,flask数据库没有Django封装的好,数据库的定义多样化。

    # 打开调试模式
    DEBUG = True
    
    # SQLALCHEMY_TRACK_MODIFICATIONS = False
    # # session必须要设置key
    SECRET_KEY = 'A0Zr98j/3yX R~XHH!jmN]'
    #
    # # mysql数据库连接信息,这里改为自己的账号
    # SQLALCHEMY_DATABASE_URI = "mysql://username:password@ip:port/dbname"
    
    
    runserver.py 是我的项目启动文件
    
     from html_report import app
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    
  • 相关阅读:
    (转)分布式加载网站的静态文件
    (转)一步一步Asp.Net MVC系列_权限管理设计起始篇
    (转)SQL Server复制入门(一)复制简介
    (转)【配置属性】—Entity Framework实例详解
    (转)动态Entity Framework查询:Dynamic Query 介绍
    (转)用扩展方法优化多条件查询
    (转)一步一步Asp.Net MVC系列_权限管理之权限控制
    (转 )Entity Framework Code First使用者的福音 EF Power Tool使用记之二(问题探究)
    (转)【工欲善其事必先利其器】—Entity Framework实例详解
    (转)C#/winform 腾讯QQ注册
  • 原文地址:https://www.cnblogs.com/lph970417/p/11557423.html
Copyright © 2011-2022 走看看