flask使用sqlit3的两种方式
方式一: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)
flask使用sqlit3的两种方式相关推荐
- flask 操作mysql的两种方式-sqlalchemy操作
flask 操作mysql的两种方式-sqlalchemy操作二.ORM sqlalchemy操作#coding=utf-8 # model.pyfrom app import dbclass Use ...
- flask 操作mysql的两种方式-sql操作
flask 操作mysql的两种方式-sql操作一.用常规的sql语句操作 # coding=utf-8 # model.pyimport MySQLdbdef get_conn():conn = M ...
- flask 使用 SQLAlchemy 的两种方式
1. 使用 flask-SQLAlchemy 扩展 # flask-ext-sqlalchemy.pyfrom flask import Flask from flask.ext.sqlalchemy ...
- python接口服务两种方式(被调用、主动推送)
项目中用python开发,要对外接口时,根据场景不同,一般有两种方式: 外部调用python接口,返回数据 接口主动向外部推送数据 1外部调用python接口,返回数据 这种方式一般可以通过http接 ...
- python 收发微信之一:利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信
目 录 摘要 实操 代码分析 需求来源与路径选择 参考 摘要 本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单 ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- 周一02.3运行python程序的两种方式
一.运行python程序的两种方式 方法一:交互式: 优点:输入一行代码立刻返回结果 缺点:无法永久保存代码 方法 ...
- 实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
贺邦+原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的: 使用库函数 ...
- android不调用系统发送短信,android之两种方式调用短信发送接口
释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...
最新文章
- Console-算法[for]-打印出杨辉三角形
- Web前端 性能优化
- SAP UI5 应用开发教程之三十九 - SAP UI5 应用出现白屏的一些常见错误和分析方法分享
- java删除通用方法_一个比较通用的java删除文件和文件夹的方法
- Android SD卡
- jQuery+toggle
- 2017.10.23 卡牌游戏 失败总结
- 可以发外链的网站_可以发外链的地方有哪些?-top推
- (16)Verilog模块例化-基本语法(四)(第4天)
- k8s selector_Kubernetes 服务选择(selector)
- C# 使用 quartz.net 做定时任务
- [WP8.1UI控件编程]Windows Phone动画方案的选择
- Android8.1 源码添加黑名单拦截电话和短信记录
- UI设计中的原型图用什么工具?怎么做?给谁看?
- 计算机注册表管理,注册表命令,教您电脑怎么打开注册表编辑器
- 移动硬盘无法读取怎么办?
- 建筑业减碳绝非一招鲜 专家建议加强改造农村建筑
- Python道路之——画自己名字
- 汉字 计算机 坟墓,墓的拼音_墓组词_墓意思(解释)-常用汉字大全
- 机器学习、深度学习中常用的优化算法详解——梯度下降法、牛顿法、共轭梯度法
热门文章
- 由于找不到iUtils.dll,无法继续执行代码。重新安装程序可能会解决此问题。
- 世界上最漂亮的写作工具Typora(创作者必备软件)
- Linux故障自愈脚本,实现故障自愈要攻克的3个问题以及开箱即用的方案
- JSP 文件上传下载系列之二[Commons fileUpload]
- Socket 实例之透析java,C#的互操作
- Android5.1自定义闹钟铃声,Android 设置来电铃声、通知铃声、闹钟铃声中的坑
- 理解java虚拟机有什么用_java虚拟机的作用是什么?我们为什么要用虚拟机?
- 不能包含全角 正则_java常用正则表达式
- apk 泊车摄像头_【实测】 有了这款360全景泊车神器 新司机秒变老司机
- android ios 混合编程,React Native与原生(Android、iOS)混编,三端痛点解析