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内置函数dir详解
Apr 14 Python
Python中的super()方法使用简介
Aug 14 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
python递归法解决棋盘分割问题
Jul 17 Python
Python中调用其他程序的方式详解
Aug 06 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
python 读取二进制 显示图片案例
Apr 24 Python
pytorch查看模型weight与grad方式
Jun 24 Python
Django分页器的用法你都了解吗
May 26 Python
Python合并pdf文件的工具
Jul 01 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 获取mysql数据库信息代码
2009/03/12 PHP
实现PHP+Mysql无限分类的方法汇总
2015/03/02 PHP
thinkPHP下ueditor的使用方法详解
2015/12/26 PHP
PHP 闭包详解及实例代码
2016/09/28 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php 数据结构之链表队列
2017/10/17 PHP
PHP多维数组排序array详解
2017/11/21 PHP
JavaScript null和undefined区别分析
2009/10/14 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
14款NodeJS Web框架推荐
2014/07/11 NodeJs
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
python网络编程实例简析
2014/09/26 Python
python进行TCP端口扫描的实现
2018/12/21 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
windows10在visual studio2019下配置使用openCV4.3.0
2020/07/14 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
英国足球店:UK Soccer Shop
2017/11/19 全球购物
英国计算机产品零售商:Novatech(定制个人电脑、笔记本电脑、工作站和服务器)
2018/01/28 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
马智宇婚礼主持词
2014/03/22 职场文书
机关办公室岗位职责
2014/04/16 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
十八大观后感
2015/06/12 职场文书
素质教育学习心得体会
2016/01/19 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL