flask是一个python application 框架
flask 相比 Django操作更简单
1 可以用pycharm直接创建一个flask工程
直接可以运行,这样自动就安装好了flask包.
也可以通过pip install Flask.
2 新项目中
from flask import Flask
from flask import request
from flask import render_template
from flask import make_response
from flask import session
from contextlib import closing
from flask import g
import sqlite3
app = Flask(__name__)
#如果要使用session,则需要为应用程序定义一个密钥
app.secret_key = 'JHKLSDGosdf98076djklHSDad?'
#连接数据库,并返回连接对象
def connect_db():
#连接数据库,并返回数据库连接对象
return sqlite3.connect("c:/xxxx/fpro1/users.db")
#初始化数据库,执行schema.sql文件,并提交
def init_db():
#closing函数的作用在于使用完db对象之后,将其关闭
with closing(connect_db()) as db:
#读取schema.sql当中的sql语句,并将其执行
with app.open_resource("schema.sql",mode='r') as f:
#读取文件当中的所有行,将其一次性执行
db.cursor().executescript(f.read())
db.commit()
#per request,per connection
@app.before_request
def before_request():
#g是一个全局对象,在所有的函数当中都可以访问
g.db = connect_db()
print("before")
@app.after_request
def after_response(response):
print("after")
g.db.close()
return response
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/abc')
def abc():
return "abc"
@app.route('/page/<index>')
def page(index):
print(index)
return "" + index
@app.route('/users/<year>/<month>/<day>')
def get_user_by_date(year,month,day):
return year + ":" + month + ":" + day
@app.route('/test_request')
def test_request():
print(request)
print(request.method)
print(request.args.get('name','nobody'))
return "aaa"
@app.route('/user')
def user():
u1 = {'name': 'zhangsan', 'age': 20}
u2 = {'name': 'lisi', 'age': 22}
return render_template('user.html', u1=u1, u2=u2)
@app.route('/store_cookie')
def store_cookie():
#创建一个响应对象
resp = make_response(render_template("test_cookie.html"))
resp.set_cookie("abc", "123")
resp.set_cookie("abcd", "1234")
return resp
@app.route("/get_cookie")
def get_cookie():
value1 = request.cookies.get("abc")
value2 = request.cookies.get("abcd")
return value1 + ":" + value2
@app.route("/test_session")
def test_session():
print(type(session))
session['username'] = 'zhangsan'
print(session['username'])
print(session.get('username'))
return "test_session"
@app.route("/add_user/<id>/<name>/<age>")
def add_user(id, name, age):
# sql = "insert into user values("+id+",'"+name+"',"+age+")"
#sqlites使用?作为占位符
sql = "insert into user VALUES (?,?,?)"
#连接数据库,返回数据库连接对象
# db = connect_db()
#执行sql语句,将列表当中的数据替换到占位符上
g.db.execute(sql, [id, name, age])
g.db.commit()
return "add_user"
@app.route("/get_all_user")
def get_all_user():
#执行查询语句,将查询语句的结果放置在游标当中
cursor = g.db.execute("select * from user")
#cursor.fetchall()将会取出游标当中所有的数据,每一个数据都是一个元组
for row in cursor.fetchall():
print(row)
print(row[0])
print(row[1])
print(row[2])
return "get_all_user"
if __name__ == '__main__':
app.run()
执行之后
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* 然后我们在浏览器中输入这个地址
*
3 数据库的创建方式.两种方式.代码中书写 和 项目创建. 1在本项目下创建一个文件,例如schema.sql.然后在python代码中的init_db方法初始化这个数据库,然后我们就看到一个数据库生成了.2第二种方式,我们先创建一个文件,例如mydb.右击项目
选择最末尾一项,data source. 然后根据提示创建指向本文件的数据库.成功之后,写入建表语句和插入数据.我们查看数据库,发现表和数据都已经插入了.如果没有看到数据库的同学,可以在pycharm的最左下角,看到一个pc的标志,点击在弹出的窗口中选择数据库选项.