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编程中的反模式实例分析
Dec 08 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
基于Python log 的正确打开方式
Apr 28 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
对python sklearn one-hot编码详解
Jul 10 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Python异常处理操作实例详解
Aug 28 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
Django文件存储 默认存储系统解析
Aug 02 Python
Python try except else使用详解
Jan 12 Python
python通过函数名调用函数的几种方法总结
Jun 07 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
JSON在PHP中的应用介绍
2012/09/08 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
js切换光标示例代码
2013/10/10 Javascript
js实现日期级联效果
2014/01/23 Javascript
基于Jquery实现键盘按键监听
2014/05/11 Javascript
轻松创建nodejs服务器(4):路由
2014/12/18 NodeJs
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
详解webpack 多入口配置
2017/06/16 Javascript
javascript 取小数点后几位几种方法总结
2017/08/02 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
基于JavaScript的数据结构队列动画实现示例解析
2020/08/06 Javascript
Python常用随机数与随机字符串方法实例
2015/04/09 Python
Python中的ceil()方法使用教程
2015/05/14 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
2018/12/19 Python
六行python代码的爱心曲线详解
2019/05/17 Python
一套PHP的笔试题
2013/05/31 面试题
学校门卫工作职责
2013/12/07 职场文书
学习方法演讲稿
2014/05/10 职场文书
物业管理工作方案
2014/05/10 职场文书
教师演讲稿大全
2014/05/16 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2014年党建工作总结
2014/11/11 职场文书
写给老婆的保证书
2015/02/27 职场文书
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技