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计算文本文件行数的方法
Jul 06 Python
Python实现求两个csv文件交集的方法
Sep 06 Python
Python解决走迷宫问题算法示例
Jul 27 Python
python五子棋游戏的设计与实现
Jun 18 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
使用pandas读取文件的实现
Jul 31 Python
django之自定义软删除Model的方法
Aug 14 Python
python实现飞机大战小游戏
Nov 08 Python
Python3操作YAML文件格式方法解析
Apr 10 Python
python中np是做什么的
Jul 21 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 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
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
PHP递归创建多级目录
2015/11/05 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
2011/11/14 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
js随机生成26个大小写字母
2016/02/12 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
JQuery常用简单动画操作方法回顾与总结
2019/12/07 jQuery
Vue.js中的高级面试题及答案
2020/01/13 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
python中split方法用法分析
2015/04/17 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
Python3.7中安装openCV库的方法
2018/07/11 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python实现五子棋游戏
2019/06/18 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
Pandas中DataFrame基本函数整理(小结)
2020/07/20 Python
python字典与json转换的方法总结
2020/12/28 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
2014年重阳节敬老活动方案
2014/09/16 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
银行员工考核评语
2014/12/31 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript