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中numpy基础学习及进行数组和矢量计算
Feb 12 Python
Python中类型检查的详细介绍
Feb 13 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
详解python中的Turtle函数库
Nov 19 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python实现给微信指定好友定时发送消息
Apr 29 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Python读取表格类型文件代码实例
Feb 17 Python
使用Python将Exception异常错误堆栈信息写入日志文件
Apr 08 Python
python反扒机制的5种解决方法
Feb 06 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 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
coreseek 搜索英文的问题详解
2013/06/08 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
2019/09/29 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
jquery获取多个checkbox的值异步提交给php
2015/07/07 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
Three.js中矩阵和向量的使用教程
2019/03/19 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
python中元类用法实例
2014/10/10 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
2018/02/18 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
python 获取url中的参数列表实例
2018/12/18 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
python通过安装itchat包实现微信自动回复收到的春节祝福
2020/01/19 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
大学生党课思想汇报
2013/12/29 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
校园运动会广播稿
2014/10/06 职场文书
助学感谢信范文
2015/01/21 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
工作简报范文
2015/07/21 职场文书