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实现绘制树枝简单示例
Jul 24 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
使用anaconda的pip安装第三方python包的操作步骤
Jun 11 Python
Python unittest单元测试框架总结
Sep 08 Python
Python单元和文档测试实例详解
Apr 11 Python
python中的句柄操作的方法示例
Jun 20 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Python数学形态学实例分析
Sep 06 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
Jan 14 Python
python 错误处理 assert详解
Apr 20 Python
Python 制作查询商品历史价格的小工具
Oct 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测试程序运行时间的类
2012/02/05 PHP
整理的一些实用WordPress后台MySQL操作命令
2013/01/07 PHP
PHP 观察者模式的实现代码
2013/05/10 PHP
php简单统计在线人数的方法
2016/05/10 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
python爬虫入门教程之点点美女图片爬虫代码分享
2014/09/02 Python
Python实现高效求解素数代码实例
2015/06/30 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
Python实例一个类背后发生了什么
2016/02/09 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
2019/02/20 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Python面向对象多态实现原理及代码实例
2020/09/16 Python
Django url 路由匹配过程详解
2021/01/22 Python
犯错检讨书
2014/02/21 职场文书
酒店员工培训方案
2014/06/02 职场文书
民族学专业求职信
2014/07/28 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
2014年安全生产工作总结
2014/11/13 职场文书
2015初中团委工作总结
2015/07/28 职场文书
详解Laravel框架的依赖注入功能
2021/05/27 PHP
淡雅古典唯美少女娇媚宁静迷人写真
2022/03/21 杂记