flask笔记 02 | Flask数据库连接(sqlite、mysql)

这篇具有很好参考价值的文章主要介绍了flask笔记 02 | Flask数据库连接(sqlite、mysql)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于Flask数据库

  • Flask没有指定使用的数据库,不像django提供了orm数据库抽象层,可以直接采用对象的方式操作数据库。但为了开发效率,在开发Flask项目中一般会选择 SQLALchemy 来操作数据库,类似django的ORM.
  • SQLALchemy实际是对数据库的抽象,让开发者不直接使用sql语句进行开发,而是通过Python对象来操作数据库。

以下所有的操作都在PyCharm中进行

flask连接sqlite

1. 下载安装

  • 安装flask

pip install flask

  • 安装 Flask-SQLAlchemy

pip install Flask-SQLAlchemy

2. 设置连接

== flask连接sqlite数据库(以下可能会报错,请注意注释!)==

1. 代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)

# 【1】注释以下两行后可能会报错: RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set.
# app_ctx = app.app_context()     
# app_ctx.push()

class BaseConfig():
    DEBUG = True
    # 获取项目目录
    APP_PATH = os.path.dirname(__file__)
    # sqlite数据库url
    SQLALCHEMY_DATABASE_URI = f'sqlite:///{APP_PATH}/database'

app.config.from_object(BaseConfig)

# 创建数据库连接,管理项目
db = SQLAlchemy(app)

class User(db.Model):  #模型类继承db.Model
	"""创建User表"""	
	#  SQLAlchemy 需要手动执行主键列,第一个参数是 字段类型,第二个参数是约束条件
    id = db.Column(db.INTEGER, primary_key=True)  
    username = db.Column(db.String(50))
    password = db.Column(db.String(40))    
	# 【2】若想增加一个字段,run之后并没有加入表中,可以先删除表,再run,然后刷新即可加入(因为该表已存在,不会重新创建表了)
	# desc = db.Column(db.String(40))   
	
if __name__ == '__main__':
	# 【3】删除所有表,注意这条是危险命令,会将模型类对应数据库中的表物理删除。在实际生产环境下勿用。
	# db.drop_all()
    db.create_all()   # 创建所有的表
2. pycharm中操作sqlite
问题分析
- 注释【1】问题:RuntimeError: Working outside of application context.

直接运行以上代码,会发现报错“RuntimeError: Working outside of application context.”(下图),需要撤销注释【1】
flask sqlite,Python学习笔记,数据库,flask,笔记
解决:请看大神操作

  • 运行之前
    flask sqlite,Python学习笔记,数据库,flask,笔记
  • 再次运行,会发现出现了数据库
    flask sqlite,Python学习笔记,数据库,flask,笔记
    flask sqlite,Python学习笔记,数据库,flask,笔记
    flask sqlite,Python学习笔记,数据库,flask,笔记
    flask sqlite,Python学习笔记,数据库,flask,笔记
    flask sqlite,Python学习笔记,数据库,flask,笔记
- 注释【2】问题:如何新增字段?
  • 新增一条字段后,运行,刷新表后并没有显示新增字段,
    flask sqlite,Python学习笔记,数据库,flask,笔记
  • 将注释【3】撤销,再运行,刷新表后就可发现新增的字段名。
    flask sqlite,Python学习笔记,数据库,flask,笔记

3. 附:配制键 & 常用数据库的链接URI

1. Flask-SQLAlchemy 配置键

flask sqlite,Python学习笔记,数据库,flask,笔记

2. 常用数据库的链接URI

URI: 统一资源标识符,用于标识某一互联网资源名称的字符串

数据库 URI
MySQL mysql://username:password@hostname/database
Postgres postgresql://username:password@hostname/database
SQLite (Unix) sqlite:python/data/database
SQLite (Windows) sqlite:///c:/db/data/database
Oracle oracle://scott:tiger@127.0.0.1:1521/sidname

字段说明:
username: 登录数据库的用户名
password: 登录数据库的密码
hostname:服务器主机ip,可以是本地主机(localhost)也可以是远程服务器
database:表示要使用的数据库

在ubuntu中连接mysql要先创建数据库:
先在mysql中创建数据库:

# 连接mysql
mysql -uroot -pmysql
# 查看所有数据库
show databases;
# 创建数据库名为 py
create database py charset=utf8;

flask连接mysql

1. 安装pymysql

pip install pymysql # 首先保证安装有mysql应用程序

2. flask连接mysql

- 代码
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
import pymysql

pymysql.install_as_MySQLdb()

app = Flask(__name__)

# 不加以下两行可能会报错  RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set.
app_ctx = app.app_context()     
app_ctx.push()


class BaseConfig():
    DEBUG = True
    # 获取项目目录
    APP_PATH = os.path.dirname(__file__)
    # sqlite数据库url
    # SQLALCHEMY_DATABASE_URI = f'sqlite:///{APP_PATH}/database'

    # mysql数据库url
    SQLALCHEMY_DATABASE_URI = 'mysql://username:password@hostname/database'  # 填写自己mysql数据库的用户名,密码,主机IP端口,数据库名 例如:hostname:127.0.0.1:3306

app.config.from_object(BaseConfig)

# 创建数据库连接,管理项目
db = SQLAlchemy(app)

class User(db.Model):  #模型类继承db.Model
    id = db.Column(db.INTEGER, primary_key=True)
    username = db.Column(db.String(50))
    password = db.Column(db.String(40))   
    # desc = db.Column(db.String(40))   # 增加一个字段 run后没有加入表中,要先删除表,再run,然后刷新表


if __name__ == '__main__':
    # 删除所有表
    # db.drop_all()
    db.create_all()   # 创建所有的表

- 连接mysql
1. 先创建一个数据库

flask sqlite,Python学习笔记,数据库,flask,笔记

2. pycharm中操作mysql

flask sqlite,Python学习笔记,数据库,flask,笔记
flask sqlite,Python学习笔记,数据库,flask,笔记

  • 测试连接时,如果出现了如下报错:Server returns invalid timezone. Need to set ‘serverTimezone’ property.
    flask sqlite,Python学习笔记,数据库,flask,笔记
  • 原因:时区不一致,MySQL驱动中默认时区是UTC,与本地时间(中国)相差8个小时。
    GMT(Greenwich Mean Time):格林威治标准时间
    UTC:世界标准时间
    CST(China Standard Time):中国标准时间
    GMT + 8 = UTC + 8 = CST
  • 方法:
    点击Set time zone,在UTC后+8(或者改为GMT)
    flask sqlite,Python学习笔记,数据库,flask,笔记
3. 连接成功

flask sqlite,Python学习笔记,数据库,flask,笔记文章来源地址https://www.toymoban.com/news/detail-824700.html

到了这里,关于flask笔记 02 | Flask数据库连接(sqlite、mysql)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flask 数据库 连接池、DBUtils、http 连接池

    DBUtils 是一套用于管理 数据库 \\\" 连接池 \\\" 的Python包,为 \\\"高频度、高并发\\\"  的数据库访问提供更好的性能,可以自动管理连接对象的创建和释放。 并允许对非线程安全的数据库接口进行线程安全包装和连接。 该连接可在各种多线程环境中使用。 使用场景:如果使用的是流行

    2024年02月04日
    浏览(26)
  • flask-session、数据库连接池

    flask 自带session---》以cookie的形式放到了浏览器中---》加密 真正的session,是在服务端存储     -django中存在djangosession表中     -flask中,使用第三方,保存在---》redis中---》flask-session 使用步骤 高版本的flask出现一个问题:         用高版本:在app中放一个参数  app.sessio

    2024年02月14日
    浏览(24)
  • (二十七)Flask之数据库连接池DBUtils库

    🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 🔥🔥 本文已收录于Flask框架从入门到实战专栏 :《Flask框架从入门到实战》 🔥🔥 热门专栏推荐 :《Python全栈系列教程》、《爬虫从入门到精通系列

    2024年04月13日
    浏览(27)
  • Flask狼书笔记 | 05_数据库

    这一章学习如何在Python中使用DBMS(数据库管理系统),来对数据库进行管理和操作。本书使用 SQLite 作为示例。 注 :按下 Ctrl+F5 ,或 Shift+F5 可以清除浏览器缓存。 分为SQL(Structured Query Language)数据库和NoSQL(Not Only SQL)数据库。 SQL :稍显复杂,但不容易出错,可以适应大

    2024年02月09日
    浏览(23)
  • 如何使用Flask-SQLAlchemy来管理数据库连接和操作数据?

    首先,我们需要安装Flask-SQLAlchemy。你可以使用pip来安装它,就像这样: 好了,现在我们已经有了一个可以操作数据库的工具,接下来让我们来看看如何使用它吧! 首先,我们需要创建一个Flask应用对象,并配置数据库的连接字符串和师: 现在,我们已经创建了一个数据库,

    2024年02月15日
    浏览(36)
  • 利用yolov8零售商品识别实现的智能结算系统 yolo+后端flask+数据库sqlite+前端html(从零开始,全流程教学)

    全流程 教程,从数据采集到模型使用到最终展示。 支持用户点击添加至购物车、图片识别添加至购物车、摄像头识别添加至购物车,还包括用户信息,商品展示等功能。若有任何疑问和建议欢迎评论区讨论。 摄像头识别添加至购物车 图片识别添加至购物车 用户点击添加至

    2024年02月10日
    浏览(47)
  • 将网页数据读入数据库+将数据库数据读出到网页——基于python flask实现网页与数据库的交互连接【全网最全】

    【全网最全!保姆级教学!!】 本篇博客基于flask技术,实现数据库和网页端的交互。 实现效果:在网页端输入数据,能够将数据存入数据库。反向操作时,能将数据库的数据取出,显示在网页端。不仅如此,还支持数据的查询和修改。  读取网页数据存入数据库,效果如下

    2024年02月13日
    浏览(26)
  • python Flask项目使用SQLalchemy连接数据库时,出现RuntimeError:Working outside of application context.的解决过程记录

    在使用python的Flask框架跟着教程编写项目时,我跟着教程使用了三个文件来组织,分别是main.py(主程序),module.py(数据库模型),controller.py(蓝图模块程序,用Blueprint衔接) 在主程序中,创建app、SQLalchemy实例对象db并将二者绑定 在module.py中,导入主程序中的db和app,创建

    2024年02月09日
    浏览(35)
  • Flask数据库操作-Flask-SQLAlchemy

    Flask中一般使用flask-sqlalchemy来操作数据库。flask-sqlalchemy的使用介绍如下: 一、SQLAlchemy SQLALchemy 实际上是对数据库的抽象,让开发者不用直接和 SQL 语句打交道,而是通过 Python 对象来操作数据库,在舍弃一些性能开销的同时,换来的是开发效率的较大提升。 SQLAlchemy是一个关

    2024年02月22日
    浏览(41)
  • flask数据库操作

    本文将详细介绍在Flask Web应用中如何设计数据库模型,并使用Flask-SQLAlchemy等扩展进行数据库操作的最佳实践。内容涵盖数据模型设计,ORM使用,关系映射,查询方法,事务处理等方面。通过本文,您可以掌握Flask数据库应用的基本知识。 Flask作为一个流行的Python Web框架,提供了高度的

    2024年02月14日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包