python flask sqlite http服务

python flask 服务

为了让拼接项目能够简单实用http服务,用python flask 来做一个http服务,使用python的原因是拼接项目本身很多人工智能的服务是用python来写。数据库为了简单实用sqlite,python自带sqlite3 ,很方便

db.sql

CREATE TABLE if not exists project(id INTEGER PRIMARY KEY AUTOINCREMENT,projectname TEXT UNIQUE NOT NULL,picnum TEXT NOT NULL,memo TEXT,created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE if not exists rtsp(id INTEGER PRIMARY KEY AUTOINCREMENT,projectid INTEGER NOT NULL,created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,urls TEXT NOT NULL,picpath TEXT NOT NULL,FOREIGN KEY (projectid) REFERENCES project(id)
);

上面的表在不存在的时候就会创建,存成db.sql

show me the code

代码如下

from __future__ import with_statement
from contextlib import closing  
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, \abort, render_template, flash,jsonify# configuration
DATABASE = './project.db'
DEBUG = Trueapp = Flask(__name__)
app.config.from_object(__name__)app.config.from_envvar('FLASKR_SETTINGS', silent=True)def connect_db():return sqlite3.connect(app.config['DATABASE'])def init_db():with closing(connect_db()) as db:with app.open_resource('db.sql',"r") as f:#str = f.read()#print(str)db.cursor().executescript(f.read())db.commit()@app.before_request
def before_request():g.db = connect_db()@app.after_request
def after_request(response):g.db.close()return response@app.route('/')
def show_first():return "this is a test"@app.route('/project', methods=['GET'])
def show_project():cur = g.db.execute('select id,projectname,picnum,memo,created from project order by id desc')entries = [dict(id=row[0], projectname=row[1],picnum= row[2],memo=row[3],created=row[4]) for row in cur.fetchall()]return jsonify(entries)@app.route('/project/add', methods=['POST'])
def add_entry():#if not session.get('logged_in'):#    abort(401)g.db.execute('insert into project (projectname,picnum,memo) values (?,?,?)',[request.form['projectname'], request.form['picnum'],request.form['memo'] ])g.db.commit()flash('New project was successfully posted')return redirect(url_for('show_first'))@app.route('/project/del/id>', methods=['POST'])
def del_entry():#if not session.get('logged_in'):#    abort(401)g.db.execute('delete from project where id = ?',[id])g.db.commit()flash('project was successfully delete')return redirect(url_for('show_first'))#需要登录或者单点登录的时候把以下代码准备加上
@app.route('/login', methods=['GET', 'POST'])
def login():error = Noneif request.method == 'POST':if request.form['username'] != app.config['USERNAME']:error = 'Invalid username'elif request.form['password'] != app.config['PASSWORD']:error = 'Invalid password'else:session['logged_in'] = Trueflash('You were logged in')return redirect(url_for('show_first'))return render_template('login.html', error=error)#需要登录或者单点登录的时候把以下代码准备加上
@app.route('/logout')
def logout():session.pop('logged_in', None)flash('You were logged out')return redirect(url_for('show_first'))if __name__ == '__main__':init_db()app.run()

执行

访问主页
在这里插入图片描述

执行project的时候,出来项目数据,这是一条我写在sqlite中的数据

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13241.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app

uni-app 一、准备工作1.新建项目2.配置浏览器3.兼容4.新建页面 二、上手1.pages.json文件的页面配置与全局配置2.rpx尺寸单位3.内置组件4.vue2写法(1)模板(2)插值语法(3)指令(4)styl…

猿人学web刷题1

1.第一题 js混淆源码乱码 - 猿人学 : url 时间戳加密 右键遇到反调试&#xff0c;参考前面的文章 过反调试 2.ast解混淆 首页1.js 拿到 function oo0O0, 在<script>标签里面, 无法调试&#xff0c;分析自己提取出来&#xff0c;或则hook替换 加密逻辑存在于window.a中&a…

分布式概念

分布式系统中的相关概念 1 大型互联网项目架构目标 2 集群和分布式 替换模块 3 架构演进

代码随想录day11

20. 有效的括号 思路&#xff1a;这里用模拟栈的方法会更好理解&#xff0c;也就是我们每次遇到朝左方向的三种类型的时候&#xff0c;就加入相反方向的右括号到result栈中。由于栈是一个先进后出的方式&#xff0c;所以我们会有一个判断stack当前为不为空&#xff0c;和stack[…

大型语言模型与知识图谱协同研究综述:两大技术优势互补

机器之心报道 编辑&#xff1a;杜伟 多图综述理清当前研究现状&#xff0c;这篇 29 页的论文值得一读。 大型语言模型&#xff08;LLM&#xff09;已经很强了&#xff0c;但还可以更强。通过结合知识图谱&#xff0c;LLM 有望解决缺乏事实知识、幻觉和可解释性等诸多问题&am…

JVM源码剖析之SymbolTable和StringTable

很多读者在观看JVM相关的书籍时会看到SymbolTable和StringTable&#xff0c;书中的三言二语介绍的不是很清楚&#xff0c;并且读者的水平有限&#xff0c;导致无法理解SymbolTable和StringTable。所以特意写此篇图文并茂的文章来彻底理解SymbolTable和StringTable这两张表。 版…

mac电脑上,webm格式怎么转换成mp4?

mac电脑上&#xff0c;webm格式怎么转换成mp4&#xff1f;webm格式的视频也是最近几年也越来越多的&#xff0c;小编最近就不止一次的下载到过webm格式的视频&#xff0c;很多小伙伴肯定对它还并不是很了解&#xff0c;webm是由谷歌公司所提出以及开发出来的视频文件格式&#…

debian to go

可以使用虚拟机操作&#xff0c;在运行镜像到安装步骤时选择 u盘 不需要手动分 /boot 分区之类的&#xff0c;“Automaction”自动分区就行&#xff0c;全安装到根目录。boot load 安装到 /dev/sdb&#xff0c;也就是硬盘本身 推荐使用gpt分区表&#xff0c;建议拿不用的盘练…

MySQL表单查询

根据题目完成下列要求 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT …

UML类图的6种关系

目录 一、UML类图的6种关系&#xff08;依赖关系由弱到强&#xff09;&#xff1a; 二、6种关系归纳总结 2.1 第一种归纳方式&#xff1a;先分组&#xff0c;再分组&#xff08;由大到小&#xff0c;由宏观到微观&#xff09; 2.2 第二种归纳方式&#xff1a;先聚合&#x…

计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势相关技术与方法介绍系统分析总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现 摘要 本文介绍了基于微信小程序和云开发的小区垃圾分类知识手…

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用

文章目录 前言一、网络发展各阶段二、网络通信的三大要素1.IP地址2.端口号3.网络协议 三、TCP/IP五层网络模型各层级的用处网络设备所在分层 四、封装和分用封装分用网络传输的实际情况 总结 前言 本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各…