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 的两种方式相关推荐

  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使用sqlit3的两种方式

    方式一:raw_sql import sqlite3 from flask import Flask, request, jsonifyapp = Flask(__name__)DATABASE_UR ...

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

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

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

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

  6. hive建立内部表映射hbase_Hive 建外链表到 Hbase(分内部表、外部表两种方式)

    一. Hive 建内部表,链到hbase :特点:Hive drop表后,Hbase 表同步删除 drop table if exists hbase_kimbo_test1; CREATE TABL ...

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

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

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

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

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

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

最新文章

  1. 【玩转数据】让您的PPT数据图表炫酷起来吧!
  2. CVPR‘22 最新106篇论文分方向整理|包含目标检测、动作识别、图像处理等32个方向
  3. .classpath 和.project文件含义
  4. 倒排文件索引(Inverted File Index)的建立
  5. Kudu - 一个融合低延迟写入和高性能分析的存储系统
  6. C#程序开发中经常遇到的10条实用的代码
  7. 智能音箱 之 音频通路质量--测试与参数
  8. c++中计算2得n次方_《一元二次方程》单元试卷,从中总结出5个考点,初三学生应知道...
  9. BI中事实表,维度表和数据集市,数据仓库的理解
  10. IPLATUI--下拉列表
  11. 探索新技术经验分享(六)logicaldoc二次开发探索
  12. Matlab画图线型、符号及颜色设置
  13. ubuntu 安装万能五笔
  14. windows设置tomcat守护进程
  15. 创建Cocos2dx项目两种方法
  16. Android动画全篇系列(二)——补间动画
  17. R语言ggplot2包学习笔记
  18. 证件照换背景,excel2步搞定!
  19. FIFO,LPU,CLOCK时钟算法
  20. 构建开发环境 构建demo_构建自己的wotsapp第6部分

热门文章

  1. Html5 Canvas 扫雷 (IE9测试通过)
  2. (灌水)如何限制一个WinForm应用程序只能在一个进程运行
  3. 自定义html页面鼠标右键,javascript鼠标右键菜单自定义效果
  4. 新闻更新php html,phphtml 新闻发布系统,运用php+mysql,里面包括数据库和php文件。 Other systems 其他 249万源代码下载- www.pudn.com...
  5. HDU2544(Bellman-ford算法和Floyd算法)
  6. PTA基础编程题目集-7-16 求符合给定条件的整数集
  7. [HAOI2012]音量调节 入门dp
  8. 牛客小白月赛25 补题+题解[A-J]
  9. 线段树(点查询、区间查询、区间修改)模板
  10. 线段树分治 ---- CF1217F - Forced Online Queries Problem(假离线 可撤销并查集 + 线段树分治)详解