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实现多线程的方式及多条命令并发执行
Jun 07 Python
利用python实现命令行有道词典的方法示例
Jan 31 Python
python利用正则表达式排除集合中字符的功能示例
Oct 10 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
Dec 14 Python
python操作日志的封装方法(两种方法)
May 23 Python
对于Python深浅拷贝的理解
Jul 29 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
Python错误的处理方法
Jun 23 Python
pytorch查看模型weight与grad方式
Jun 24 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 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 显示指定路径下的图片
2009/10/29 PHP
PHP运行模式的深入理解
2013/06/03 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
laravel 中某一字段自增、自减的例子
2019/10/11 PHP
google地图的路线实现代码
2009/08/20 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
用js实现in_array的方法
2013/11/05 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
详解vue-resource promise兼容性问题
2017/06/20 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
vue2.0实现前端星星评分功能组件实例代码
2018/02/12 Javascript
简述JS控制台的使用
2018/07/15 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
在微信小程序中保存网络图片
2019/02/12 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
Cpy和Python的效率对比
2015/03/20 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python多进程写入同一文件的方法
2019/01/14 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
Python如何使用input函数获取输入
2020/08/06 Python
Beach Bunny Swimwear官网:设计师泳装和性感比基尼
2019/03/13 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
与C++相比,Java中的数组有什么不同
2014/03/25 面试题
留学推荐信怎么写
2014/01/25 职场文书
店面销售职位的职责
2014/03/09 职场文书
人大调研汇报材料
2014/08/14 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
sql字段解析器的实现示例
2021/06/23 SQL Server