Python使用flask架構操作sqlite3的兩種方式,flasksqlite3

來源:互聯網
上載者:User

Python使用flask架構操作sqlite3的兩種方式,flasksqlite3

本文執行個體講述了Python使用flask架構操作sqlite3的兩種方式。分享給大家供大家參考,具體如下:

方式一:raw_sql

import sqlite3from flask import Flask, request, jsonifyapp = Flask(__name__)DATABASE_URI = ":memory:"# 建立表格、插入資料@app.before_first_requestdef 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 dbdef 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.pyfrom flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Truedb = SQLAlchemy(app)# 定義ORMclass 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_requestdef 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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.