本文实例讲述了Python使用flask框架操作sqlite3的两种方式。分享给大家供大家参考,具体如下:
方式一:raw_sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# 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 )
|
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://www.cnblogs.com/hhh5460/p/6557350.html