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中yaml配置文件模块的使用详解
Apr 27 Python
Python判断两个list是否是父子集关系的实例
May 04 Python
python os用法总结
Jun 08 Python
对Python中plt的画图函数详解
Nov 07 Python
python学生管理系统学习笔记
Mar 19 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
新年福利来一波之Python轻松集齐五福(demo)
Jan 20 Python
Python文件读写w+和r+区别解析
Mar 26 Python
Python request操作步骤及代码实例
Apr 13 Python
如何使用Python进行PDF图片识别OCR
Jan 22 Python
深入探讨opencv图像矫正算法实战
May 21 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 会话(session 时间设定)使用入门代码
2008/06/05 PHP
php 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
一贴学会PHP 新手入门教程
2009/08/03 PHP
PHP 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP中的插件机制原理和实例
2014/07/08 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
JS删除数组元素的函数介绍
2013/03/27 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
JS实现简易贪吃蛇游戏
2020/08/24 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
python使用MySQLdb访问mysql数据库的方法
2015/08/03 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
pandas中去除指定字符的实例
2018/05/18 Python
解决python报错MemoryError的问题
2018/06/26 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
迅雷Cued工作心得体会
2014/01/27 职场文书
表决心的诗句大全
2014/03/11 职场文书
工程质量承诺书
2014/03/27 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
毕业生学校组织意见
2015/06/04 职场文书
学习心理学心得体会
2016/01/22 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书