方式一:raw_sql

import sqlite3
from flask import Flask, request, jsonifyapp = 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.Rowreturn dbdef 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.pyfrom flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = 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 = nameself.email = emaildef __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) 

本文转自罗兵博客园博客,原文链接:http://www.cnblogs.com/hhh5460/p/6557350.html,如需转载请自行联系原作者

flask使用sqlit3的两种方式相关推荐

  1. flask 操作mysql的两种方式-sqlalchemy操作

    flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...

  2. flask 操作mysql的两种方式-sql操作

    flask 操作mysql的两种方式-sql操作一.用常规的sql语句操作 # coding=utf-8 # model.pyimport MySQLdbdef get_conn():conn = M ...

  3. flask 使用 SQLAlchemy 的两种方式

    1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.pyfrom flask import Flask from flask.ext.sqlalchemy ...

  4. python接口服务两种方式(被调用、主动推送)

    项目中用python开发,要对外接口时,根据场景不同,一般有两种方式: 外部调用python接口,返回数据 接口主动向外部推送数据 1外部调用python接口,返回数据 这种方式一般可以通过http接 ...

  5. python 收发微信之一:利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信

    目 录 摘要 实操 代码分析 需求来源与路径选择 参考 摘要 本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单 ...

  6. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  7. 周一02.3运行python程序的两种方式

    一.运行python程序的两种方式 方法一:交互式:                      优点:输入一行代码立刻返回结果                       缺点:无法永久保存代码 方法 ...

  8. 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...

  9. android不调用系统发送短信,android之两种方式调用短信发送接口

    释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...

最新文章

  1. Console-算法[for]-打印出杨辉三角形
  2. Web前端 性能优化
  3. SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享
  4. java删除通用方法_一个比较通用的java删除文件和文件夹的方法
  5. Android SD卡
  6. jQuery+toggle
  7. 2017.10.23 卡牌游戏 失败总结
  8. 可以发外链的网站_可以发外链的地方有哪些?-top推
  9. (16)Verilog模块例化-基本语法(四)(第4天)
  10. k8s selector_Kubernetes 服务选择(selector)
  11. C# 使用 quartz.net 做定时任务
  12. [WP8.1UI控件编程]Windows Phone动画方案的选择
  13. Android8.1 源码添加黑名单拦截电话和短信记录
  14. UI设计中的原型图用什么工具?怎么做?给谁看?
  15. 计算机注册表管理,注册表命令,教您电脑怎么打开注册表编辑器
  16. 移动硬盘无法读取怎么办?
  17. 建筑业减碳绝非一招鲜 专家建议加强改造农村建筑
  18. Python道路之——画自己名字
  19. 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
  20. 机器学习、深度学习中常用的优化算法详解——梯度下降法、牛顿法、共轭梯度法

热门文章

  1. 由于找不到iUtils.dll,无法继续执行代码。重新安装程序可能会解决此问题。
  2. 世界上最漂亮的写作工具Typora(创作者必备软件)
  3. Linux故障自愈脚本,实现故障自愈要攻克的3个问题以及开箱即用的方案
  4. JSP 文件上传下载系列之二[Commons fileUpload]
  5. Socket 实例之透析java,C#的互操作
  6. Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
  7. 理解java虚拟机有什么用_java虚拟机的作用是什么?我们为什么要用虚拟机?
  8. 不能包含全角 正则_java常用正则表达式
  9. apk 泊车摄像头_【实测】 有了这款360全景泊车神器 新司机秒变老司机
  10. android ios 混合编程,React Native与原生(Android、iOS)混编,三端痛点解析