flask 使用 SQLAlchemy 的两种方式
1. 使用 flask-SQLAlchemy 扩展
# flask-ext-sqlalchemy.pyfrom flask import Flask from flask.ext.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 setup():# Recreate database each time for demo 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)
2. 使用原生 SQLAlchemy
# flask-pure-sqlalchemy.pyfrom flask import Flask from sqlalchemy import Column, Integer, String from sqlalchemy import create_engine from sqlalchemy.orm import Session from sqlalchemy.ext.declarative import declarative_baseapp = Flask(__name__)Base = declarative_base()# 定义ORM class User(Base):__tablename__ = 'users'id = Column(Integer, primary_key=True)name = Column(String(50), unique=True)email = Column(String(120), unique=True)def __init__(self, name=None, email=None):self.name = nameself.email = emaildef __repr__(self):return '<User %r>' % (self.name)# 创建表格、插入数据 @app.before_first_request def setup():# Recreate database each time for demoengine = create_engine('sqlite://', echo=True)global sessionsession = Session(engine)Base.metadata.drop_all(bind=engine)Base.metadata.create_all(bind=engine)admin = User('admin', 'admin@example.com')session.add(admin)guestes = [User('guest1', 'guest1@example.com'),User('guest2', 'guest2@example.com'),User('guest3', 'guest3@example.com'),User('guest4', 'guest4@example.com')]session.add_all(guestes)session.commit()# 查询 @app.route('/user') def users():users = session.query(User).all()return "<br>".join(["{0}: {1}".format(user.name, user.email) for user in users])@app.route('/user/<int:id>') def user(id):user = session.query(User).filter(User.id == id).one()return "{0}: {1}".format(user.name, user.email)if __name__ == '__main__':app.run('127.0.0.1', 5000)
区别
flask 使用 SQLAlchemy 的两种方式相关推荐
- 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使用sqlit3的两种方式
方式一:raw_sql import sqlite3 from flask import Flask, request, jsonifyapp = Flask(__name__)DATABASE_UR ...
- python接口服务两种方式(被调用、主动推送)
项目中用python开发,要对外接口时,根据场景不同,一般有两种方式: 外部调用python接口,返回数据 接口主动向外部推送数据 1外部调用python接口,返回数据 这种方式一般可以通过http接 ...
- python 收发微信之一:利用 WxPusher 的 web api 及 python SDK 两种方式给自己发微信
目 录 摘要 实操 代码分析 需求来源与路径选择 参考 摘要 本文给出利用 WxPusher 提供的 web api 与 python SDK 两种方式,实现微信发送的 python 代码样例,并简单 ...
- hive建立内部表映射hbase_Hive 建外链表到 Hbase(分内部表、外部表两种方式)
一. Hive 建内部表,链到hbase :特点:Hive drop表后,Hbase 表同步删除 drop table if exists hbase_kimbo_test1; CREATE TABL ...
- 继承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 实验目的: 使用库函数 ...
最新文章
- 【玩转数据】让您的PPT数据图表炫酷起来吧!
- CVPR‘22 最新106篇论文分方向整理|包含目标检测、动作识别、图像处理等32个方向
- .classpath 和.project文件含义
- 倒排文件索引(Inverted File Index)的建立
- Kudu - 一个融合低延迟写入和高性能分析的存储系统
- C#程序开发中经常遇到的10条实用的代码
- 智能音箱 之 音频通路质量--测试与参数
- c++中计算2得n次方_《一元二次方程》单元试卷,从中总结出5个考点,初三学生应知道...
- BI中事实表,维度表和数据集市,数据仓库的理解
- IPLATUI--下拉列表
- 探索新技术经验分享(六)logicaldoc二次开发探索
- Matlab画图线型、符号及颜色设置
- ubuntu 安装万能五笔
- windows设置tomcat守护进程
- 创建Cocos2dx项目两种方法
- Android动画全篇系列(二)——补间动画
- R语言ggplot2包学习笔记
- 证件照换背景,excel2步搞定!
- FIFO,LPU,CLOCK时钟算法
- 构建开发环境 构建demo_构建自己的wotsapp第6部分
热门文章
- Html5 Canvas 扫雷 (IE9测试通过)
- (灌水)如何限制一个WinForm应用程序只能在一个进程运行
- 自定义html页面鼠标右键,javascript鼠标右键菜单自定义效果
- 新闻更新php html,phphtml 新闻发布系统,运用php+mysql,里面包括数据库和php文件。 Other systems 其他 249万源代码下载- www.pudn.com...
- HDU2544(Bellman-ford算法和Floyd算法)
- PTA基础编程题目集-7-16 求符合给定条件的整数集
- [HAOI2012]音量调节 入门dp
- 牛客小白月赛25 补题+题解[A-J]
- 线段树(点查询、区间查询、区间修改)模板
- 线段树分治 ---- CF1217F - Forced Online Queries Problem(假离线 可撤销并查集 + 线段树分治)详解