1. 程式人生 > >flask與資料庫連線相關操作

flask與資料庫連線相關操作

---恢復內容開始---

首先要安裝  flask-sqlalchemy 

資料庫連線設定

在flask-SQLAlchemy中,資料庫使用URL指定,而且程式使用的資料庫必須儲存到flask配置物件的SQLALCHEMY_DATABASE_URL鍵中

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]:3306/xinagmu?charset=utf8'

劃橫線哪裡填庫的名稱,root後面跟資料庫的密碼

其他相關配置

 

 相關的增刪改查

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_pyfile('config.ini')

# 建立資料庫物件
db = SQLAlchemy(app)
# 建立資料庫類,用來對映資料庫,將資料庫的模型作為引數傳入

class User(db.Model):

    # 宣告表明
    __tablename__ = 'user'
    # 建立欄位數  Column欄位名 固定寫法
    id = db.Column(db.Integer, primary_key=True)
    name 
= db.Column(db.String(200)) password = db.Column(db.String(200)) # 資料庫的入庫操作 @app.route("/") def index(): # 增加,入庫邏輯 # 宣告一個物件 # user = User(name='ssss', password='ssss') # # 呼叫 新增方法 # db.session.add(user) return '這是首頁' # 資料庫的刪除操作 @app.route('/del') def del_(): # 根據某個欄位做刪除,filter_by可以理解為where 條件限定
# 翻譯為delete from user where id = 1 User.query.filter_by(id=1).delete() return '刪除' # 資料庫的修改操作 @app.route('/edit') def edit(): # 根據某個欄位做修改操作 # 翻譯為 update user set name = '張三' where id = 2 User.query.filter_by(id=4).update({'name': 'susu'}) return '修改' # 資料庫的查詢操作 @app.route('/select') def select(): # 簡單的的全量查詢 # 翻譯為select *from user ulist = User.query.all() print(ulist) for i in ulist: print(i.name) # 只取一條 # 翻譯為 select *from user limit 1 # ulist = User.query.first() # print(ulist) # 使用原生的sql語句 # 翻譯為select * from user order by id desc limit 1,2 items = db.session.execute('select * from user order by id desc limit 1,2') # 將結果集強轉為list items = list(items) print(items) # 使用原生sql語句進行修改操作 # db.session.execute("update user set password='1234' where id=5 ") return '修改'if __name__ == "__main__": app.run()

 小案例:

from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config.from_pyfile('config.ini')
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]:3306/xinagmu?charset=utf8'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

db = SQLAlchemy(app)


class Movies(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    photo = db.Column(db.String(200))
    title = db.Column(db.String(100))
    score = db.Column(db.String(100))
    evalueate = db.Column(db.String(100))


@app.route('/')
def index():
    items = db.session.execute('select *from movies')
    items = list(items)
    print(items)
    return render_template('movies.html', items=items)


if __name__ == "__main__":
    app.run()
<!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>movies</title>
  </head>
  <body>
    <table border="1">
      <tr>
        <td>id</td>
        <td>photo</td>
        <td>title</td>
        <td>score</td>
        <td>evalueate</td>
      </tr>
      {% for i in items %}
      <tr>
        <td>{{ i.id }}</td>
        <td><img src="{{ i.photo }}" /></td>
        <td>{{ i.title }}</td>
        <td>{{ i.score }}</td>
        <td>{{ i.evalueate }}</td>
      </tr>

      {% endfor %}
    </table>
  </body>
</html>

  效果:

 

---恢復內容結束---