Python进阶(五十二)Flask使用pymysql连接MySQL数据库

本文主要是介绍Python进阶(五十二)Flask使用pymysql连接MySQL数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、前言
    • 二、mysql连接配置
    • 三、拓展阅读
    • 四、延伸阅读

一、前言

  • Python:3.5
  • Flask:0.12.1
  • Pymysql:0.7.10
  • MySQL:5.5

之前在做Python Web开发时,选择的是Django框架,后台的自动化实现着实十分方便。相关博文参见《Python进阶(三十六)-Web框架Django项目搭建全过程》、《 Python进阶(二十三)-Django使用pymysql连接MySQL数据库做增删改查》。对于知识的渴求,驱使我尝试使用Flask实现Web开发。

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

pip install pymysql

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

pip install flask-sqlalchemy

二、mysql连接配置

mysql连接配置代码如下:

from flask_sqlalchemy import SQLAlchemy
# 配置数据库连接
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://lmapp:lmapp@localhost/smp'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
# 创建用户角色表
class Role(db.Model):__tablename__ = 'role'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.String(64), unique=True, nullable=True)# 定义一对多关联关系user = db.relationship('User', backref='role')def __repr__(self):return '<Role %r>' % self.name
# 创建用户表
class User(db.Model):__tablename__ = 'user'uid = db.Column(db.String(11), primary_key=True)uname = db.Column(db.String(11), unique=True, nullable=True)pwd = db.Column(db.String(11), nullable=True)phone = db.Column(db.String(11), nullable=True)regtime = db.Column(db.String(20), nullable=True)stat = db.Column(db.String(1), nullable=True)# 定义外键role_id = db.Column(db.Integer, db.ForeignKey('role.id'))def __repr__(self):return '<User %r>' % self.uname

之前在配置数据库URL时,语句为:

app.config['SQLALCHEMY_DATABASE_URI'] = 
'mysql://lmapp:lmapp@localhost/smp'

在创建表时出现‘ImportError: No module named MySQLdb’错误提示。经过一番搜索,发现将配置语句改为

app.config['SQLALCHEMY_DATABASE_URI'] = 
'mysql+pymysql://lmapp:lmapp@localhost/smp'

就可以了。

三、拓展阅读

自动生成依赖包信息

pip freeze>Requirements.txt

安装依赖包

pip install -r Requirements.txt

四、延伸阅读

《Flask Web开发:基于Python的Web应用开发实战》

《Learning Python, 5th Edition》

这篇关于Python进阶(五十二)Flask使用pymysql连接MySQL数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/715549

相关文章

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE