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 相关文章推荐
在Mac OS上搭建Python的开发环境
Dec 24 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
Python复数属性和方法运算操作示例
Jul 21 Python
python3读取csv和xlsx文件的实例
Jun 22 Python
对Python信号处理模块signal详解
Jan 09 Python
python 公共方法汇总解析
Sep 16 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
Feb 29 Python
matplotlib 曲线图 和 折线图 plt.plot()实例
Apr 17 Python
python+opencv实现车道线检测
Feb 19 Python
Pandas数据类型之category的用法
Jun 28 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
php简单判断文本编码的方法
2015/07/30 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
JavaScript头像上传插件源码分享
2016/03/29 Javascript
BootStrap Fileinput初始化时的一些参数
2016/12/30 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
[原创]微信小程序获取网络类型的方法示例
2019/03/01 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
Python处理XML格式数据的方法详解
2017/03/21 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
大学教师年终总结的自我评价
2013/10/29 职场文书
诚信贷款承诺书
2014/05/30 职场文书
社区护士演讲稿
2014/08/27 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL