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常用知识点汇总
May 08 Python
读取本地json文件,解析json(实例讲解)
Dec 06 Python
Python for循环生成列表的实例
Jun 15 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
Python Tkinter 简单登录界面的实现
Jun 14 Python
python中web框架的自定义创建
Sep 08 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
Pytorch 多块GPU的使用详解
Dec 31 Python
基于plt.title无法显示中文的快速解决
May 16 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
python的pip有什么用
Jun 17 Python
如何理解及使用Python闭包
Jun 01 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单例模式应用详解
2013/06/03 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
PHP进程通信基础之信号
2017/02/19 PHP
jQuery EasyUI API 中文文档 - Menu菜单
2011/10/03 Javascript
js 判断checkbox是否选中的操作方法
2012/11/09 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
使用Node.js为其他程序编写扩展的基本方法
2015/06/23 Javascript
javascript连续赋值问题
2015/07/08 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python聊天室程序(基础版)
2018/04/01 Python
python opencv捕获摄像头并显示内容的实现
2019/07/11 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
餐厅总厨求职信
2014/03/04 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
党员个人整改措施
2014/10/24 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
个人廉政承诺书
2015/04/28 职场文书
初婚初育证明范本
2015/06/18 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技