flask + pymysql操作Mysql数据库的实例


Posted in Python onNovember 13, 2017

安装flask-sqlalchemy、pymysql模块

pip install flask-sqlalchemy pymysql

### Flask-SQLAlchemy的介绍

1. ORM:Object Relationship Mapping(模型关系映射)。

2. flask-sqlalchemy是一套ORM框架。

3. ORM的好处:可以让我们操作数据库跟操作对象是一样的,非常方便。因为一个表就抽象成一个类,一条数据就抽象成该类的一个对象。

4. 安装`flask-sqlalchemy`:`sudo pip install flask-sqlalchemy`。

安装Mysql数据库

from flask.ext.sqlalchemy import SQLAlchemy 
from flask import Flask 
 
'''配置数据库'''
app = Flask(__name__) 
app.config['SECRET_KEY'] ='hard to guess'
# 这里登陆的是root用户,要填上自己的密码,MySQL的默认端口是3306,填上之前创建的数据库名jianshu,连接方式参考 \ 
# http://docs.sqlalchemy.org/en/latest/dialects/mysql.html 
app.config['SQLALCHEMY_DATABASE_URI']='mysql+pymysql://jianshu:jianshu@127.0.0.1:3306/jianshu'
#设置这一项是每次请求结束后都会自动提交数据库中的变动 
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
#实例化 
db = SQLAlchemy(app)

模型定义

'''定义模型,建立关系'''
class Role(db.Model): 
 # 定义表名 
 __tablename__ = 'roles'
 # 定义列对象 
 id = db.Column(db.Integer, primary_key=True) 
 name = db.Column(db.String(64), unique=True) 
 user = db.relationship('User', backref='role') 
 
 #repr()方法显示一个可读字符串,虽然不是完全必要,不过用于调试和测试还是很不错的。 
 def __repr__(self): 
  return '<Role {}> '.format(self.name) 
 
class User(db.Model): 
 __tablename__ = 'users'
 id = db.Column(db.Integer, primary_key=True) 
 username = db.Column(db.String(64), unique=True, index=True) 
 role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) 
 
 def __repr__(self): 
  return '<User {}>'.format(self.username)

flask + pymysql操作Mysql数据库的实例

flask + pymysql操作Mysql数据库的实例

关系

关系数据库通过使用关系在不同的表中建立连接。关系图表达了用户和用户角色之间的简单关系。这个角色和用户是一对多关系,因为一个角色可以从属于多个用户,而一个用户只能拥有一个角色。
下面的模型类展示了中表达的一对多关系。

class Role(db.Model): 
 # ... 
 users = db.relationship('User', backref='role') 
 
class User(db.Model): 
 # ... 
 role_id = db.Column(db.Integer, db.ForeignKey('roles.id'))

flask + pymysql操作Mysql数据库的实例

flask + pymysql操作Mysql数据库的实例

#!/usr/bin/env python 
 
from exts import db 
from datetime import datetime 
 
 
class User(db.Model): 
 __tablename__ = 'user'
 id = db.Column(db.Integer,primary_key=True,autoincrement=True) 
 username = db.Column(db.String(50),nullable=False) 
 telephone = db.Column(db.String(11),nullable=False) 
 password = db.Column(db.String(100), nullable=False) 
 
class Questions(db.Model): 
 __tablename__ = 'questions'
 id = db.Column(db.Integer,primary_key=True,autoincrement=True) 
 title = db.Column(db.String(100),nullable=False) 
 content = db.Column(db.Text,nullable=False) 
 create_time = db.Column(db.DateTime,default=datetime.now) 
 author_id = db.Column(db.Integer,db.ForeignKey('user.id')) 
 
 author = db.relationship('User',backref=db.backref('questions')) 
 
class Answer(db.Model): 
 __tablename__ = 'answer'
 id = db.Column(db.Integer,primary_key=True,autoincrement=True) 
 content = db.Column(db.Text,nullable=False) 
 question_id = db.Column(db.Integer,db.ForeignKey('questions.id')) 
 author_id = db.Column(db.Integer,db.ForeignKey('user.id')) 
 
 question = db.relationship('Questions',backref = db.backref('answers')) 
 author = db.relationship('User',backref = db.backref('answers'))

Flask-SQLAlchemy数据的增、删、改、查:

1. 增:

# 增加:
article1 = Article(title='aaa',content='bbb')
db.session.add(article1)
# 事务
db.session.commit()

2. 查:

# 查
# select * from article where article.title='aaa';
article1 = Article.query.filter(Article.title == 'aaa').first()
print 'title:%s' % article1.title
print 'content:%s' % article1.content

3. 改:

# 改:
# 1. 先把你要更改的数据查找出来
article1 = Article.query.filter(Article.title == 'aaa').first()
# 2. 把这条数据,你需要修改的地方进行修改
article1.title = 'new title'
# 3. 做事务的提交
db.session.commit()

4. 删:

```
# 删
# 1. 把需要删除的数据查找出来
article1 = Article.query.filter(Article.content == 'bbb').first()
# 2. 把这条数据删除掉
db.session.delete(article1)
# 3. 做事务提交
db.session.commit()
```

以上这篇flask + pymysql操作Mysql数据库的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python模块简介之有序字典(OrderedDict)
Dec 01 Python
python编程实现希尔排序
Apr 13 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
python读取文本绘制动态速度曲线
Jun 21 Python
python实现按关键字筛选日志文件
Dec 24 Python
如何通过python实现全排列
Feb 11 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
Python 统计位数为偶数的数字代码详解
Mar 15 Python
Python pandas如何向excel添加数据
May 22 Python
Python使用grequests并发发送请求的示例
Nov 05 Python
详解Django中的FBV和CBV对比分析
Mar 01 Python
python绘制云雨图raincloud plot
Aug 05 Python
django之session与分页(实例讲解)
Nov 13 #Python
python实现图片处理和特征提取详解
Nov 13 #Python
Queue 实现生产者消费者模型(实例讲解)
Nov 13 #Python
python图像常规操作
Nov 11 #Python
python中实现k-means聚类算法详解
Nov 11 #Python
Python编程之基于概率论的分类方法:朴素贝叶斯
Nov 11 #Python
Python内存管理方式和垃圾回收算法解析
Nov 11 #Python
You might like
虫族 Zerg 魔法科技
2020/03/14 星际争霸
ThinkPHP关联模型操作实例分析
2012/09/23 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
javascript制作网页图片上实现下雨效果
2015/02/26 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
2016/04/11 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
2018/04/17 jQuery
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
Python操作mongodb的9个步骤
2018/06/04 Python
Python函数中不定长参数的写法
2019/02/13 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
在python中实现调用可执行文件.exe的3种方法
2019/07/07 Python
python 如何实现遗传算法
2020/09/22 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
会计助理岗位职责
2014/02/17 职场文书
工程材料采购方案
2014/05/18 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
为什么阅读对所有年龄段的孩子都很重要?
2019/07/08 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers