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 相关文章推荐
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
python类中super()和__init__()的区别
Oct 18 Python
python利用Guetzli批量压缩图片
Mar 23 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
pandas通过索引进行排序的示例
Nov 16 Python
python线程的几种创建方式详解
Aug 29 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
python3 动态模块导入与全局变量使用实例
Dec 22 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
Python转换字典成为对象,可以用&quot;.&quot;方式访问对象属性实例
May 11 Python
python搜索算法原理及实例讲解
Nov 18 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
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
详解PHP的抽象类和抽象方法以及接口总结
2019/03/15 PHP
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
2015/04/16 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
javascript图片滑动效果实现
2021/01/28 Javascript
详解Vue.js动态绑定class
2016/12/20 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
WEEX环境搭建与入门详解
2019/10/16 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
2019/12/10 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python中用pycurl监控http响应时间脚本分享
2015/02/02 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python多继承顺序实例分析
2018/05/26 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
Python3简单实现串口通信的方法
2019/06/12 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
用纯CSS3实现网页中常见的小箭头
2017/10/16 HTML / CSS
CSS3下的渐变文字效果实现示例
2018/03/02 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
一个C/C++编程面试题
2013/11/10 面试题
新闻专业应届生求职信
2013/10/31 职场文书
零件设计自荐信范文
2013/11/27 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
2014年教研室工作总结
2014/12/06 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
2015年商场工作总结
2015/04/27 职场文书