Flask ~~「一見傾心之初體驗」(Flask-SQLAlchemy的安裝設置及數據庫的基本使用操做----增~刪~改~查)

通過幾天的瞭解咱們以及對Flask有了初步的認識,在學習完表單後咱們來看看數據庫,數據庫想必都不陌生吧,可是在python中咱們能夠用pymysql來連接,但在Flask中咱們如何來連接數據庫呢?首先在鏈接數據庫前先引入一個SQLAlchemy,我來介紹介紹。html

SQLALchemy 其實是對數據庫的抽象,讓開發者不用直接和 SQL 語句打交道,而是經過 Python 對象來操做數據庫,在捨棄一些性能開銷的同時,換來的是開發效率的較大提高python

SQLAlchemy是一個關係型數據庫框架,它提供了高層的 ORM 和底層的原生數據庫的操做。flask-sqlalchemy 是一個簡化了 SQLAlchemy 操做的flask擴展。mysql

下面來講一個如何安裝SQLAlchemy :sql


安裝 flask-sqlalchemy:數據庫

pip install flask-sqlalchemy編程

若是鏈接的是 mysql 數據庫,須要安裝 mysqldb:flask

pip install flask-mysqldbsession

數據庫可想而知,確定離不開增~刪~改~查,下邊來簡單介紹一下:oracle

上代碼:app

# -*- encoding: utf-8 -*-

from flask import Flask,render_template
#導入第三方連接庫aql點金數
from flask_sqlalchemy import SQLAlchemy

#創建對象

app=Flask(__name__)

#載入配置文件

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

#指定數據庫連接還有庫名
# app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:mysql@127.0.0.1:3306/myflask?charset=utf8'

#指定配置,用來省略提交操做,也能夠放在配置文件中更簡單
# app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

#創建數據庫對象
db = SQLAlchemy(app)

#創建數據庫,用來映射數據庫表,將數據庫的模型做爲參數傳入
class User(db.Model):
    #聲明代表
    __tablename__ = 'user'
    #創建字段函數
    id = db.Column(db.Integer,primary_key = True)
    name = db.Column(db.String(200))
    password = db.Column(db.String(200))
                            

#數據庫的查詢操做(查)
@app.route('/select')
def select_user():
    #簡單的全量查詢
    #翻譯爲 select * from user
    # ulist = User.query.all()
    # for i in ulist:
    #     print(i.name)

    # #只取一條
    # #翻譯爲 select * from user limit 1
    # ulist = User.query.first()
    # print(ulist.name)



    #使用原生的sql語句(查)
    #翻譯爲 select * from user order by id desc limit 1,2
    item = db.session.execute('select * from user order by id desc limit 1,2')
    #將結果集強轉爲list
    item = list(item)
    print(item)


    #使用原生語句進行修改操做
    # db.session.execute('update user set password ="321000" where id = 6 ')
    #將動態數據傳輸給模板
    return render_template('sql.html',item=item)
   這裏跳轉的的網頁又本身隨意定義一個模塊 #數據庫的修改操做(改) @app.route('/edit') def edit_user(): #根據字段作修改操做 #翻譯爲 update user set name='張三' where id=4 User.query.filter_by(id = 4).update({'name':'張三'}) return '這裏是修改' #數據庫的刪除操做(刪) @app.route('/del') def del_user(): #根據某個字段作刪除,filter_by 能夠理解爲where條件限定 #翻譯爲 delete from user where id=1 User.query.filter_by(id = 3).delete() User.query.filter_by() return '這裏是刪除操做' #數據庫的入庫操做(增) @app.route('/') def index(): #增,入庫邏輯 #聲明對象 user = User(name='隔壁老王',password='123123') #調用添加方法 db.session.add(user) #提交入庫 # db.session.commit() return '這裏是首頁' if __name__ == "__main__": app.run()

上邊代碼中提到了return中返回的模板文件,實現動態的數據展現,簡單代碼以下:

<!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>
    <style>
    table{
        background-color:blueviolet;
        border: solid 3px gold;
        padding: 10px;
        
    }

    </style>
</head>
<body>

    <table>
        {# 對數據進行p遍歷輸出 #}

        {% for i in item%}

            <tr>
                <td>{{i.id}}</td>
            </tr>

            <tr>
                <td>{{i.name}}</td>
            </tr>

            <tr>
                <td>{{i.password}}</td>
            </tr>

        {% endfor %}

    </table>


</body>
</html>

注:

以上就是flask鏈接數據庫的增刪改查

以上又兩種數據庫的增刪改查,SQLAlchemy若是不習慣能夠選擇原生的代碼

原生的格式爲 :

item = db.session.execute('sql語句')
 

總結:

 
SQLAlchemy是一個基於Python實現的ORM框架。該框架創建在 DB API之上,使用關係對象映射進行數據庫操做,簡言之即是:將類和對象轉換成SQL,而後使用數據API執行SQL並獲取執行結果。
 

優勢 :

只須要面向對象編程, 不須要面向數據庫編寫代碼.
   對數據庫的操做都轉化成對類屬性和方法的操做.
   不用編寫各類數據庫的sql語句.
實現了數據模型與數據庫的解耦, 屏蔽了不一樣數據庫操做上的差別.
   不在關注用的是mysql、oracle...等.
   經過簡單的配置就能夠輕鬆更換數據庫, 而不須要修改代碼.

缺點 :

相比較直接使用SQL語句操做數據庫,有性能損失.
根據對象的操做轉換成SQL語句,根據查詢的結果轉化成對象, 在映射過程當中有性能損失。
相關文章
相關標籤/搜索