Python使用flask框架操作sqlite3的两种方式


Posted in Python onJanuary 31, 2018

本文实例讲述了Python使用flask框架操作sqlite3的两种方式。分享给大家供大家参考,具体如下:

方式一:raw_sql

import sqlite3
from flask import Flask, request, jsonify
app = Flask(__name__)
DATABASE_URI = ":memory:"
# 创建表格、插入数据
@app.before_first_request
def create_db():
  # 连接
  conn = sqlite3.connect(DATABASE_URI)
  c = conn.cursor()
  # 创建表
  c.execute('''DROP TABLE IF EXISTS user''')
  c.execute('''CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, email TEXT)''')
  # 数据
  # 格式:用户名,邮箱
  purchases = [('admin', 'admin@example.com'),
         ('guest1', 'guest1@example.com'),
         ('guest2', 'guest2@example.com'),
         ('guest3', 'guest3@example.com'),
         ('guest4', 'guest4@example.com')]
  # 插入数据
  c.executemany('INSERT INTO user(name, email) VALUES (?,?)', purchases)
  # 提交!!!
  conn.commit()
  # 关闭
  conn.close()
def get_db():
  db = sqlite3.connect(DATABASE_URI)
  db.row_factory = sqlite3.Row
  return db
def query_db(query, args=(), one=False):
  db = get_db()
  cur = db.execute(query, args)
  db.commit()
  rv = cur.fetchall()
  db.close()
  return (rv[0] if rv else None) if one else rv
@app.route("/user")
def users():
  res = query_db("SELECT * FROM user WHERE id <= ?", args=(6,))
  return "<br>".join(["{0}: {1}".format(user[1], user[2]) for user in res])
@app.route("/user/<int:id>")
def user(name):
  res = query_db("SELECT * FROM user WHERE id=?", args=(id,)) #不妨设定:第一次只返回6个数据
  return jsonify(id = res[1],
          name = res[2],
          email = res[3]) # 返回json格式
if __name__ == "__main__":
  app.run(debug=True)

方式二:orm(既flask-SQLAlchemy)

# flask_sqlalchemy.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
# 定义ORM
class User(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(80), unique=True)
  email = db.Column(db.String(120), unique=True)
  def __init__(self, name, email):
    self.name = name
    self.email = email
  def __repr__(self):
    return '<User %r>' % self.name
# 创建表格、插入数据
@app.before_first_request
def create_db():
  # Recreate database each time for demo
  #db.drop_all()
  db.create_all()
  admin = User('admin', 'admin@example.com')
  db.session.add(admin)
  guestes = [User('guest1', 'guest1@example.com'),
        User('guest2', 'guest2@example.com'),
        User('guest3', 'guest3@example.com'),
        User('guest4', 'guest4@example.com')]
  db.session.add_all(guestes)
  db.session.commit()
# 查询
@app.route('/user')
def users():
  users = User.query.all()
  return "<br>".join(["{0}: {1}".format(user.name, user.email) for user in users])
# 查询
@app.route('/user/<int:id>')
def user(id):
  user = User.query.filter_by(id=id).one()
  return "{0}: {1}".format(user.name, user.email)
# 运行
if __name__ == '__main__':
  app.run('127.0.0.1', 5000)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Django中login_required装饰器的深入介绍
Nov 24 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
Flask框架URL管理操作示例【基于@app.route】
Jul 23 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
Python 实现中值滤波、均值滤波的方法
Jan 09 Python
python算法与数据结构之单链表的实现代码
Jun 27 Python
python数据处理之如何选取csv文件中某几行的数据
Sep 02 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
python求numpy中array按列非零元素的平均值案例
Jun 08 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
pyqt5简介及安装方法介绍
Jan 31 #Python
Python实现的圆形绘制(画圆)示例
Jan 31 #Python
Python Json序列化与反序列化的示例
Jan 31 #Python
Python实现JSON反序列化类对象的示例
Jan 31 #Python
python删除过期log文件操作实例解析
Jan 31 #Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 #Python
使用Python制作微信跳一跳辅助
Jan 31 #Python
You might like
如何隐藏你的.php文件
2007/01/04 PHP
让PHP以ROOT权限执行系统命令的方法
2011/02/10 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
PHP封装的mysqli数据库操作类示例
2019/02/16 PHP
Dojo 学习要点
2010/09/03 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
微信小程序小组件 基于Canvas实现直播点赞气泡效果
2020/05/29 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
小程序实现tab标签页
2020/11/16 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python opencv如何实现图片绘制
2020/01/19 Python
基于pycharm实现批量修改变量名
2020/06/02 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
正宗的澳大利亚Ugg靴子零售商:UGG Express
2020/04/19 全球购物
单位门卫岗位职责
2013/12/20 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
买卖协议书范本
2014/04/21 职场文书
小学生国庆65周年演讲稿范文(2篇)
2014/09/21 职场文书
西安大雁塔导游词
2015/02/10 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
Flask response响应的具体使用
2021/07/15 Python
python脚本框架webpy模板赋值实现
2021/11/20 Python