简介

结构

$ tree -I "__pycache*|*.pyc" -FCL 3
.
|-- database.db
|-- models.py
|-- templates/
| |-- home.html
| |-- list.html
| |-- result.html
| `-- students.html
`-- views.py

展示

1. 主页

2. 学生信息查看

3. 添加学生信息

技术

  • Flask – SQLite的使用
  • flask中表单数据的传递

运行

python .\views.py

代码

创建数据库表单

# crdb.py

import sqlite3

conn = sqlite3.connect('database.db')
print "Opened database successfully"; conn.execute('CREATE TABLE students (name TEXT, addr TEXT, city TEXT, pin TEXT)')
print "Table created successfully";
conn.close()

views视图

from flask import Flask, render_template, request
import sqlite3 as sql app = Flask(__name__) @app.route('/')
def home():
return render_template('home.html') @app.route('/enternew')
def new_student():
return render_template('students.html') @app.route('/addrec', methods=['POST', 'GET'])
def addrec():
"""添加成员"""
if request.method == 'POST':
try:
nm = request.form['nm']
addr = request.form['add']
city = request.form['city']
pin = request.form['pin'] with sql.connect("database.db") as con:
cur = con.cursor() cur.execute(
"INSERT INTO students(name, addr, city, pin) VALUES(?, ?, ?, ?)", (nm, addr, city, pin)) con.commit()
msg = "添加成功"
except:
con.rollback()
msg = "添加失败" finally:
return render_template("result.html", msg=msg)
con.close() @app.route('/list')
def list():
"""查询"""
con = sql.connect("database.db")
con.row_factory = sql.Row cur = con.cursor()
cur.execute("select * from students") rows = cur.fetchall()
return render_template("list.html", rows=rows) if __name__ == '__main__':
app.run(debug=True)

models模块

import sqlite3 as lite

class Database():

    def __init__(self, db='database.db'):

        self.con = lite.connect(db, check_same_thread=False)
self.cur = self.con.cursor() def create_students(self):
"""创建表单"""
with self.con:
sql = """create table students(
id integer primary key autoincrement,
name TEXT not null,
addr TEXT not null,
city TEXT,
pin TEXT)"""
self.cur.execute("DROP TABLE IF EXISTS students")
self.cur.execute(sql) def insert_students(self, name, addr, city, pin):
"""插入用户信息"""
with self.con:
sql = "INSERT INTO students(name, addr, city, pin) VALUES(?, ?, ?, ?)"
self.cur.execute(sql, (name, addr, city, pin)) if __name__ == '__main__':
db = Database('database.db')
db.create_students()

home主页

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>主页</title>
</head>
<body>
<h1><a href = "/list">查看学生信息</a></h1> <br>
<h1><a href = "/enternew">添加学生信息</a></h1>
</body>
</html>

list列表页

<!doctype html>
<html>
<body>
<h1>学生表</h1>
<hr>
<table border = 1>
<thead>
<td>姓名</td>
<td>地址</td>
<td>城市</td>
<td>区号</td>
</thead> {% for row in rows %}
<tr>
<td>{{row["name"]}}</td>
<td>{{row["addr"]}}</td>
<td> {{ row["city"]}}</td>
<td>{{row['pin']}}</td>
</tr>
{% endfor %}
</table>
<br>
<a href = "/">返回主页</a>
</body>
</html>

result消息结果页

<!doctype html>
<html>
<body>
<h3>添加结果 : {{ msg }}</h3><br>
<h2><a href = "\">返回主页</a></h2>
</body>
</html>

studentst添加成员

<html>
<body>
<form action = "{{ url_for('addrec') }}" method = "POST">
<h3>学生信息</h3>
姓名<br>
<input type = "text" name = "nm" /></br><br> 地址<br>
<textarea name = "add" ></textarea><br><br> 城市<br>
<input type = "text" name = "city" /><br><br> 区号<br>
<input type = "text" name = "pin" /><br><br> <input type = "submit" value = "输入" /><br>
</form>
</body>
</html>

Flask – SQLite:增加成员的更多相关文章

  1. 为什么 Category 不能增加成员变量-nonfragile

    三.既然是 non-fragile ivars,为什么 Category 不能增加成员变量?     看过一些资料,理由并不是很让人信服.我觉得并不是做不到,只是现在没有做,现在不支持.我在 Opti ...

  2. 给 Qt sqlite 增加加密功能

    整合sqlite代码 开源的sqlite中没有实现加密的功能,所以如果需要加密功能,需要自己实现 sqlite3_keysqlite3_rekey 等相关函数 不过开源的 wxsqlite3中已经实现 ...

  3. iOS运行时,如何增加成员变量

    必须实现getter和setter方法 ``` - (void)setName:(NSString *)name { /** * 为某个类关联某个对象 * * @param object#> 要 ...

  4. android数据库sqlite增加删改查

    http://hi-beijing.iteye.com/blog/1322040 http://www.cnblogs.com/wenjiang/archive/2013/05/28/3100860. ...

  5. sqlite 增加字段语句

    ALTER TABLE `table1` ADD `AAAA` VARCHAR( 10 ) NOT NULL ; ALTER TABLE 'IPC_FGUID' ADD 'iPassageway' V ...

  6. SQLite XXTea加密学习

    这几天优化数据库读写,移植了xxtea加密到最新的数据库sqlite 3.12.2里,一些好文章放在这里.移植后,数据库读写性能异常优秀! 这几天又发现,数据库还是发生了无法写入情况,数据库崩溃掉了. ...

  7. [python][flask][flask-SQLAlchemy]关于flask-SQLAlchemy的初级使用教程

    鉴于网上关于flask-SQLAlchemy的实例使用教程参差不齐,于此写下工作学习过程中的使用过程,以便分享交流. 对于python关于flask有一定了解的高端玩家来说,请转至flask官方开发文 ...

  8. Flask学习之旅--数据库

    一.写在前面 在Web开发中,数据库操作是很重要的一部分,因为网站的很多重要信息都保存在数据库之中.而Flask在默认情况下是没有数据库.表单验证等功能的,但是可以用Flask-extension为W ...

  9. 实验3、Flask数据库操作-如何使用Flask与数据库

    1. 实验内容 数据库的使用对于可交互的Web应用程序是极其重要的,本节我们主要学习如何与各种主要数据库进行连接和使用,以及ORM的使用 2. 实验要点 掌握Flask对于各种主要数据库的连接方法 掌 ...

随机推荐

  1. Cesium官方教程13--Cesium和Webpack

    原文地址:https://cesiumjs.org/tutorials/cesium-and-webpack/ Cesium 和 Webpack Webpack是非常强大非常流行的JavaScript ...

  2. Spring SpringMVC SpringBoot SpringCloud 注解整理大全

    Spring SpringMVC SpringBoot SpringCloud 注解整理 才开的博客所以放了一篇以前整理的文档,如果有需要添加修改的地方欢迎指正,我会修改的φ(๑˃∀˂๑)♪ Spri ...

  3. Access数据库连接字符串

    <connectionStrings> <add name="connStr" connectionString="server=.;uid=home; ...

  4. 第一个简单netty程序

    一个简单的netty的程序,主要是netty的客户端和服务端通信. 大部分说明都写在代码注释中 netty server TimeServer import io.netty.bootstrap.Se ...

  5. LUOGU P4113 [HEOI2012]采花

    传送门 解题思路 莫队题卡莫队...莫队只能拿到100分,满分200.正解主席树??发个莫队100分代码. 代码 #include<iostream> #include<cstdio ...

  6. 1008-Redo

    关于flag,都立下了 T1 考试的时候就觉得是贪心,但是不会反悔emm…… 于是正解就是一个堆优化可反悔的贪心=.= 每次找前面最小的,于是是小根堆. 我们在交易的时候发现后面的一个可以更优. 于是 ...

  7. light oj 1079 01背包

    #include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...

  8. mysql高级教程(三)-----数据库锁、主从复制

    锁 概念 锁是计算机协调多个进程或线程并发访问某一资源的机制.  在数据库中,除传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性. ...

  9. JDBC2 --- 获取数据库连接的方式二 --- 技术搬运工(尚硅谷)

    /** * 方式二,对方式一的迭代 * 在如下的程序中,不出现第三方的api,使得程序具有更好的可移植性. * @throws Exception */ @Test public void testC ...

  10. 数字统计类题目的非数位DP解法

    ZJOI2010 数字统计 上题题意为求[l,r]区间中每个数字(0~9)出现的次数 一般的做法为将区间当成[0,r]-[0,l-1],然后进行数位DP 但事实上将区间当成[0,r]-[0,l-1]后 ...