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中os操作文件及文件路径实例汇总
Jan 15 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
利用Python开发微信支付的注意事项
Aug 19 Python
python中nan与inf转为特定数字方法示例
May 11 Python
Django基础之Model操作步骤(介绍)
May 27 Python
Python 元类实例解析
Apr 04 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
Nov 14 Python
Python解析多帧dicom数据详解
Jan 13 Python
PyCharm 2020.2下配置Anaconda环境的方法步骤
Sep 23 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
Feb 07 Python
用Python提取PDF表格的方法
Apr 11 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 unset全局变量运用问题的深入解析
2013/06/17 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
JavaScript入门之事件、cookie、定时等
2011/10/21 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
Javascript中引用类型传递的知识点小结
2017/03/06 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
详解Vuejs2.0 如何利用proxyTable实现跨域请求
2017/08/03 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
2019/08/02 jQuery
[02:24]DOTA2亚洲邀请赛 NAVI战队出场宣传片
2015/02/07 DOTA
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
Python Requests库基本用法示例
2018/08/20 Python
在python中bool函数的取值方法
2018/11/01 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
python实现简单银行管理系统
2019/10/25 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
python中的django是做什么的
2020/07/31 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
电子信息专业自荐书
2014/02/04 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2014年民警工作总结
2014/11/25 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
大学入学感言
2015/08/01 职场文书
python Tkinter的简单入门教程
2021/04/11 Python