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. 一张图理解shell内核

    #!/bin/bash name="liu de hua";#name后面=不能有空格 echo "hello word ${name}work $name"; ...

  2. AtCoder Grand Contest 013题解

    传送门 \(A\) 先把相同的缩一起,然后贪心就可以了 //quming #include<bits/stdc++.h> #define R register #define fp(i,a ...

  3. 实体类(VO,DO,DTO,PO)的划分《转载---》

    转载自:https://blog.csdn.net/u010722643/article/details/61201899 经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实 ...

  4. Zk单机多实例部署

    一.环境准备 当前环境:centos7.3一台软件版本:zookeeper-3.5.2部署目录:/usr/local/zookeeper启动端口:2181,2182,2183配置文件:/usr/loc ...

  5. 部署owa预览服务

    b部署owa预览服务 一.前言 1.1 服务器需求 转换文档需要两台服务器,一台为转换server,另外一台为域控server.(安装office web apps的服务器必须加域才能安装成功,如果没 ...

  6. TCP粘包拆包问题分析及应对方案

    粘包拆包问题是处于网络比较底层的问题,在数据链路层.网络层以及传输层都有可能发生.我们日常的网络应用开发大都在传输层进行,由于UDP有消息保护边界,不会发生粘包拆包问题,因此粘包拆包问题只发生在TCP ...

  7. 安装adbyby

    搞得那么麻烦干什么,助人就要直接点嘛请用 Xshell 连接你的路由 1.安装curlopkg update && opkg install curl 2.创建相关文件夹(如已经安装a ...

  8. cmd命令net和sc

    来看windows中启动和关闭服务的方法:在cmd下可有两种方法打开,分别是net和sc. 1.net用于打开没有被禁用的服务, NET命令是功能强大的以命令行方式执行的工具. 它包含了管理网络环境. ...

  9. 8款超好用的SVG编辑工具用起来

    随着响应式网页的发展,对于内容呈现的要求也越来越高,尤其是图像.为了在各种设备上能实现自然伸缩或扩展而不影响图片质量,所以矢量图形(SVG)正变得越来越受欢迎. 大家都知道,在计算机图形学中,有两种主 ...

  10. 006 认识BeanNameAware

    在看Spring的生命周期,就要注意到Spring Aware,Aware是什么,在这篇文章中,主要是说明三个部分,Spring的生命周期[这个在后面会继续说明,这里这是一个大纲],然后说明Sprin ...