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中使用SQLite的简单教程
Apr 29 Python
python用装饰器自动注册Tornado路由详解
Feb 14 Python
python 统计代码行数简单实例
May 04 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
Jul 30 Python
理论讲解python多进程并发编程
Feb 09 Python
python 3.6.5 安装配置方法图文教程
Sep 18 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
使用WingPro 7 设置Python路径的方法
Jul 24 Python
numpy创建单位矩阵和对角矩阵的实例
Nov 29 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Python3.7安装pyaudio教程解析
Jul 24 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中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
js parsefloat parseint 转换函数
2010/01/21 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
ES6 Object.assign()的用法及其使用
2020/01/18 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
python查看列的唯一值方法
2018/07/17 Python
python pcm音频添加头转成Wav格式文件的方法
2019/01/09 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
python如何实现图片压缩
2020/09/11 Python
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
生物学专业求职信
2014/07/23 职场文书
2014年营销工作总结
2014/11/22 职场文书
2015年家长学校工作总结
2015/04/22 职场文书
公司禁烟通知
2015/04/23 职场文书
历史博物馆观后感
2015/06/05 职场文书
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android