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)

Flask 数据库连接的更多相关文章

  1. flask数据库连接池DBUtils

    数据库连接池 为啥要使用数据库连接池 频繁的连接和断开数据库,消耗大,效率低 DBUtils可以创建多个线程连接数据库,且一直保持连接,不会断开 执行数据库操作时,由数据池分配线程,当数据池空时,可选 ...

  2. Python Flask数据库连接池

    1. 安装pymysql pip3 install pymysql 2. 安装dbutils开源工具库 pip3 install dbutils 3. 模式一: from DBUtils.Persis ...

  3. 3、flask之基于DBUtils实现数据库连接池、本地线程、上下文

    本篇导航: 数据库连接池 本地线程 上下文管理 面向对象部分知识点解析 1.子类继承父类__init__的三种方式 class Dog(Animal): #子类 派生类 def __init__(se ...

  4. Flask请求扩展和数据库连接池

    1.1.Flask之请求扩展 #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, Request, render ...

  5. Flask中使用数据库连接池 DBUtils ——(4)

    DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程 ...

  6. Flask Mysql数据库连接

    下载库: pip install flask-sqlalchemy 下载后进入终端使用python后import导入模块测试没有报错就说明成功了 py文件: # -*- encoding: utf-8 ...

  7. flask与数据库连接相关操作

    ---恢复内容开始--- 首先要安装  flask-sqlalchemy 数据库连接设置 在flask-SQLAlchemy中,数据库使用URL指定,而且程序使用的数据库必须保存到flask配置对象的 ...

  8. flask之基于DBUtils实现数据库连接池、本地线程、上下文

    本篇导航: 数据库连接池 本地线程 上下文管理 面向对象部分知识点解析 1.子类继承父类__init__的三种方式 class Dog(Animal): #子类 派生类 def __init__(se ...

  9. flask框架----数据库连接池

    数据库连接池 flask中是没有ORM的,如果在flask里面连接数据库有两种方式 一:pymysql 二:SQLAlchemy 是python 操作数据库的一个库.能够进行 orm 映射官方文档 s ...

随机推荐

  1. Processing 2.1.1 无法使用video和movie问题解决方案

    升级到2.1.1后,尝试着运行了一下sample中的video和movie,结果都报错,上网搜了一下,找到解决方法. 1. 首先来看movie的错误,如下: JNA: Callback org.gst ...

  2. Mathtype新版本

    新版本Mathtype在MS Word 2007不能直接调用.今天发现,可以直接从Windows程序菜单中启动.在独立的窗口下编辑,编辑后粘贴到Word或Tex中. 早年使用Word时,嫌Mathty ...

  3. 下载svn

    http://subversion.apache.org/download.cgi?update=201708081800 Windows下载zip,其他系统的下载tar.gz

  4. webbench 源代码

    WebBench源码:https://github.com/EZLippi/WebBench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问 ...

  5. Java 产生随机数并写入txt文档中

    源代码: import java.io.*; import java.util.Random; public class AlgorithmTest { public static void main ...

  6. Java SpringBoot全局错误处理类,返回标准结果

    package demo.utils; import com.alibaba.fastjson.JSON; import demo.controller.ProductController; impo ...

  7. fluent当中的梯度宏和VOF梯度的获取【转载】

    1 FLUENT变量梯度宏 C_R_G C_P_G C_U_G C_V_G C_W_G C_T_G C_H_G C_YI_G C_R_RG C_P_RG C_U_RG C_V_RG C_W_RG C_ ...

  8. 数据结构Java版之邻接矩阵实现图(十一)

    邻接矩阵实现图,是用一个矩阵,把矩阵下标作为一个顶点,如果顶点与顶点之间有边.那么在矩阵对应的点上把值设为 1 .(默认是0) package mygraph; import java.util.Li ...

  9. Mybatis笔记(二)

    目录 MyBatis 逆向工程 MyBatis Generator 使用 分页插件 1.下载分页插件 2.配置分页插件 3.使用分页插件 SSM整合(spring与springMVC) 1.创建web ...

  10. html5中time元素详解

    html5中time元素详解 一.总结 一句话总结: time的使用的话主要是将时间放在datetime属性里面:<time datetime="2015-10-22"> ...