方式一:raw_sql

import sqlite3
from flask import Flask, request, jsonify app = 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.Row
return db def 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.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = 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 = name
self.email = email def __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的两种方式的更多相关文章

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

    flask 操作mysql的两种方式-sqlalchemy操作 二.ORM sqlalchemy操作 #coding=utf-8 # model.py from app import db class ...

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

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

  3. flask 使用 SQLAlchemy 的两种方式

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

  4. Struts2实现ajax的两种方式

    基于Struts2框架下实现Ajax有两种方式,第一种是原声的方式,另外一种是struts2自带的一个插件. js部分调用方式是一样的: JS代码: function testAjax() { var ...

  5. CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking)

    CSharpGL(18)分别处理glDrawArrays()和glDrawElements()两种方式下的拾取(ColorCodedPicking) 我在(Modern OpenGL用Shader拾取 ...

  6. 两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

  7. Android ScrollView监听滑动到顶部和底部的两种方式(你可能不知道的细节)

    Android ScrollView监听滑动到顶部和底部,虽然网上很多资料都有说,但是不全,而且有些细节没说清楚 使用场景: 1. 做一些复杂动画的时候,需要动态判断当前的ScrollView是否滚动 ...

  8. 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

    在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式 ...

  9. (转)SqlServer 数据库同步的两种方式 (发布、订阅),主从数据库之间的同步

    最近在琢磨主从数据库之间的同步,公司正好也需要,在园子里找了一下,看到这篇博文比较详细,比较简单,本人亲自按步骤来过,现在分享给大家. 在这里要提醒大家的是(为了更好的理解,以下是本人自己理解,如有错 ...

随机推荐

  1. Jenkins自动化打包配置

    具体流程不细讲,教程很多 * 环境配置: * xmapp安装 * Jenkins.war丢到Tomcat目录中,配置Jenkins * 宿主机安装jdk,gradle,配置环境变量(在Jenkins的 ...

  2. 转:C#综合揭秘——细说进程、应用程序域与上下文之间的关系

    引言 本文主要是介绍进程(Process).应用程序域(AppDomain)..NET上下文(Context)的概念与操作.虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高 ...

  3. python Pipe 双管道通信

    管道:是python多进程中一种交换数据的方式 from multiprocessing import Process,current_process,Queue,Pipe import time i ...

  4. JRebel for Hybris ,Idea and Windows

    参考: Jrebel官网参考地址:https://manuals.zeroturnaround.com/jrebel/standalone/hybris.html Wiki Hybris参考地址:ht ...

  5. 记录一次nginx配置vhost的小bug

    话说这篇博客是在是为了保持自己记录生活的习惯而写的,没有什么阅读的价值,各位读者可以直接忽略了.今天在配置一个域名的时候,写了new_example.com(举例而已) 因为是内测,所以并未想象到深层 ...

  6. 用户不再sudoers文件中

    1.修改/etc/sudoers文件权限 # chmod 777 /etc/sudoers 2.编辑/etc/sudoers文件,添加要提升权限的用户: 在文件中找到root ALL=(ALL) AL ...

  7. phpstudy绑定项目(dist文件)域名--陈远波

    该篇博客是针对已经打包好的dist文件用phpstudy工具进行域名绑定,dist文件生成在这笔者不进行描述,绑定步骤如下: 一:官网下载phpstudy软件进行安装:http://phpstudy. ...

  8. 将jar包添加到maven仓库

    Maven资源库配置 访问http://mvnrepository.com/,在搜索栏中输入你要搜索的 JAR 包的关键字 例如下载ImpalaJDBC41这个jar包   选择你想要下载的Jar包版 ...

  9. IIS 注册Asp.net 4.0

    32位的Windows:---------------------------------------------------------------------------1. 运行->cmd ...

  10. ubuntu16.04忘记密码解决方案

    主要解决通过sudo apt-get install安装mysql时输入密码时输错导致安装成功后,无法登陆MySQL. 之前遇到这种问题时,我个人比较喜欢通过卸载并重新安装解决,后来觉得这个虽然可以解 ...