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
python实现给微信公众号发送消息的方法
Jun 30 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Django中Middleware中的函数详解
Jul 18 Python
Python列表的切片实例讲解
Aug 20 Python
Python的Lambda函数用法详解
Sep 03 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
Nov 19 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
python之pymysql模块简单应用示例代码
Dec 16 Python
Python 发送邮件方法总结
Aug 10 Python
Python列表元素删除和remove()方法详解
Jan 04 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(1)
2006/10/09 PHP
php中防止恶意刷新页面的代码小结
2012/10/31 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
如何把php5.3版本升级到php5.4或者php5.5
2015/07/31 PHP
jquery ajax abort()的使用方法
2010/10/28 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
jquery实现点击变换导航样式的方法
2015/08/31 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
[02:41]DOTA2英雄基础教程 谜团
2013/12/10 DOTA
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
Python统计单词出现的次数
2018/04/04 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
解决python3输入的坑——input()
2020/12/05 Python
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
大课间体育活动方案
2014/03/12 职场文书
医学求职信
2014/05/28 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
担保书范文
2015/01/20 职场文书
通知怎么写?
2019/04/17 职场文书
工作报告范文
2019/06/20 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android
漫画《尖帽子的魔法工坊》宣布动画化
2022/04/06 日漫