博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask使用sqlit3的两种方式
阅读量:5980 次
发布时间:2019-06-20

本文共 3068 字,大约阅读时间需要 10 分钟。

方式一:raw_sql

import sqlite3from flask import Flask, request, jsonifyapp = Flask(__name__)DATABASE_URI = ":memory:"# 创建表格、插入数据@app.before_first_requestdef 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 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 "
".join(["{0}: {1}".format(user[1], user[2]) for user in res])@app.route("/user/
")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 Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Truedb = SQLAlchemy(app)# 定义ORMclass 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 '
' % self.name # 创建表格、插入数据@app.before_first_requestdef 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 "
".join(["{0}: {1}".format(user.name, user.email) for user in users]) # 查询@app.route('/user/
')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
,如需转载请自行联系原作者
你可能感兴趣的文章
SQL Server代理(3/12):代理警报和操作员
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>
2018年尾总结——稳中成长
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
Centos下基于Hadoop安装Spark(分布式)
查看>>
mysql开启binlog
查看>>
设置Eclipse编码方式
查看>>
分布式系统唯一ID生成方案汇总【转】
查看>>
并查集hdu1232
查看>>
Mysql 监视工具
查看>>
Linux Namespace系列(09):利用Namespace创建一个简单可用的容器
查看>>
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
mysql多实例实例化数据库
查看>>
javascript 操作DOM元素样式
查看>>
HBase 笔记3
查看>>
【Linux】Linux 在线安装yum
查看>>