flask 框架操作MySQL数据库简单示例


Posted in Python onFebruary 02, 2020

本文实例讲述了flask 框架操作MySQL数据库。分享给大家供大家参考,具体如下:

一、创建数据库表格

"""
Created on 19-10-8
@requirement:Anaconda 4.3.0 (64-bit) Python3.6
@description:创建表格
"""
import pymysql
server = '127.0.0.1'
user = 'root'
password = 'password'
# 连接数据库
conn = pymysql.connect(server, user, password, database='information_collection') # 获取连接
cursor = conn.cursor() # 获取游标
# "**ENGINE=InnoDB DEFAULT CHARSET=utf8**"-创建表的过程中增加这条,中文就不是乱码
# 创建表
cursor.execute("""
CREATE TABLE if not exists user(
   user_id INT NOT NULL auto_increment primary key,
   user_name VARCHAR(100),
   user_password VARCHAR(100),
   user_nickname VARCHAR(100),
   user_email VARCHAR(100)
   )
   ENGINE=InnoDB DEFAULT CHARSET=utf8
 """)
# 查询数据库表user内容
cursor.execute('SELECT * FROM user')
# 查看一行 多行:cursor.fetchall()
row = cursor.fetchone()
print(row)
# if row[0] is None:
#   row0 = list(row)
#   row0[0] = 0
#   row = tuple(row0)
# # 插入数据,注:与sqlserver有些区别
cursor.execute("INSERT INTO user VALUES('%s','%s','%s','%s')" % ('xiaoming','qwe','ming','@163.com'))
# 提交数据,才会写入表格
conn.commit()
# 关闭游标关闭数据库
cursor.close()
conn.close()

二、flask操作mysql

"""
Created on 19-10-8
@requirement:Anaconda 4.3.0 (64-bit) Python3.6
@description:
"""
from flask_sqlalchemy import SQLAlchemy
from flask import Flask, jsonify, request
import configparser
import os
app = Flask(__name__)
# 使用ConfigParser 首选需要初始化实例,并读取配置文件:
my_config = configparser.ConfigParser()
my_config.read('db.conf')
# 连接数据库information_collection
app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('DEV_DATABASE_URL') or \
               "mysql+pymysql://root:password@127.0.0.1:3306/information_collection"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
mydb = SQLAlchemy()
mydb.init_app(app)
# 用户模型
class User(mydb.Model):
  user_id = mydb.Column(mydb.Integer, primary_key=True)
  user_name = mydb.Column(mydb.String(60), nullable=False)
  user_password = mydb.Column(mydb.String(30), nullable=False)
  user_nickname = mydb.Column(mydb.String(50))
  user_email = mydb.Column(mydb.String(30), nullable=False)
  def __repr__(self):
    return '<User %r>' % self.user_name
# 获取用户列表,所有数据
@app.route('/users', methods=['GET'])
def getUsers():
  data = User.query.all()
  datas = []
  for user in data:
    datas.append({'user_id': user.user_id, 'user_name': user.user_name, 'user_nickname': user.user_nickname, 'user_email': user.user_email})
  return jsonify(data=datas)
# 添加用户数据,一条一条添加
@app.route('/user', methods=['POST'])
def addUser():
  user_name = request.form.get('user_name')
  user_password = request.form.get('user_password')
  user_nickname = request.form.get('user_nickname')
  user_email = request.form.get('user_email')
  user = User(user_name=user_name, user_password=user_password, user_nickname=user_nickname, user_email=user_email)
  try:
    mydb.session.add(user)
    mydb.session.commit()
  except:
    mydb.session.rollback()
    mydb.session.flush()
  userId = user.user_id
  if (user.user_id is None):
    result = {'msg': '添加失败'}
    return jsonify(data=result)
  data = User.query.filter_by(user_id=userId).first()
  result = {'user_id': user.user_id, 'user_name': user.user_name, 'user_nickname': user.user_nickname, 'user_email': user.user_email}
  return jsonify(data=result)
# 获取单条数据
@app.route('/user/<int:userId>', methods=['GET'])
def getUser(userId):
  user = User.query.filter_by(user_id=userId).first()
  if (user is None):
    result = {'msg': '找不到数据'}
  else:
    result = {'user_id': user.user_id, 'user_name': user.user_name, 'user_nickname': user.user_nickname, 'user_email': user.user_email}
  return jsonify(data=result)
# 修改用户数据
@app.route('/user/<int:userId>', methods=['PATCH'])
def updateUser(userId):
  user_name = request.form.get('user_name')
  user_password = request.form.get('user_password')
  user_nickname = request.form.get('user_nickname')
  user_email = request.form.get('user_email')
  try:
    user = User.query.filter_by(user_id=userId).first()
    if (user is None):
      result = {'msg': '找不到要修改的记录'}
      return jsonify(data=result)
    else:
      user.user_name = user_name
      user.user_password = user_password
      user.user_nickname = user_nickname
      user.user_email = user_email
      mydb.session.commit()
  except:
    mydb.session.rollback() # 回滚
    mydb.session.flush() # 重置
  userId = user.user_id
  data = User.query.filter_by(user_id=userId).first()
  result = {'user_id': user.user_id, 'user_name': user.user_name, 'user_password': user.user_password, 'user_nickname': user.user_nickname, 'user_email': user.user_email}
  return jsonify(data=result)
# 删除用户数据
@app.route('/user/<int:userId>', methods=['DELETE'])
def deleteUser(userId):
  User.query.filter_by(user_id=userId).delete()
  mydb.session.commit()
  return getUsers()
if __name__ == '__main__':
  app.run()

三、返回数据的样式

{
  "data": {
    "user_email": "@126.com",
    "user_id": 6,
    "user_name": "xiaoli",
    "user_nickname": "lili"
  }
}

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
使用python获取CPU和内存信息的思路与实现(linux系统)
Jan 03 Python
简单介绍Python中的decode()方法的使用
May 18 Python
Python中unittest模块做UT(单元测试)使用实例
Jun 12 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
Python中的日期时间处理详解
Nov 17 Python
Python使用getpass库读取密码的示例
Oct 10 Python
浅谈numpy数组的几种排序方式
Dec 15 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
Feb 21 Python
利用python实现逐步回归
Feb 24 Python
python文件及目录操作代码汇总
Jul 08 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 #Python
使用Python操作ArangoDB的方法步骤
Feb 02 #Python
详解有关PyCharm安装库失败的问题的解决方法
Feb 02 #Python
Python 模拟生成动态产生验证码图片的方法
Feb 01 #Python
Python递归及尾递归优化操作实例分析
Feb 01 #Python
Python异步编程之协程任务的调度操作实例分析
Feb 01 #Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 #Python
You might like
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php实现仿写CodeIgniter的购物车类
2015/07/29 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
使用php自动备份数据库表的实现方法
2017/07/28 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
通过$(this)使用jQuery包装后的方法或属性
2014/05/18 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
2017/03/23 jQuery
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python中apply函数的用法实例教程
2014/07/31 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Java分治归并排序算法实例详解
2017/12/12 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
用python实现对比两张图片的不同
2018/02/05 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
如何运行带参数的python脚本
2019/11/15 Python
Python Pygame实现俄罗斯方块
2021/02/19 Python
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
英国购买威士忌网站:Master of Malt
2019/09/26 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
一些PHP的面试题
2015/05/06 面试题
文秘专业毕业生就业推荐信
2013/11/08 职场文书
会计出纳岗位职责
2013/12/25 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
八项规定对照检查材料
2014/08/31 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
golang特有程序结构入门教程
2021/06/02 Python
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers
git中cherry-pick命令的使用教程
2022/06/25 Servers