首頁 後端開發 Python教學 python中flask_sqlalchemy操作資料庫的方法範例

python中flask_sqlalchemy操作資料庫的方法範例

Nov 15, 2018 pm 02:06 PM
mysql python windows

本篇文章帶給大家的內容是關於python中flask_sqlalchemy操作資料庫的方法範例,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

flask_sqlalchemy

使用物件關係映射(Object-Relational Mapper, ORM)框架,它將低層的資料庫操作指令抽象化成高層的物件導向操作。也就是說,如果我們直接使用資料庫引擎,我們就要寫SQL 操作語句,但是,如果我們使用了ORM 框架,我們對諸如表、文檔此類的資料庫實體就可以簡化成對Python 物件的操作

SQLAlchemy已經成為了python世界裡面orm的標準,flask是一個輕巧的web框架,可以自由的使用orm,其中flask-sqlalchemy是專門為flask指定的插件。

在 Flask-SQLAlchemy 中,資料庫使用 URL 指定。

MySQL -->  mysql://username:password@hostname/database
登入後複製

安裝

 pip install flask-sqlalchemy
登入後複製

對資料庫操作

#1. 如何建立資料庫操作連線

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/zaj_sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)
登入後複製

#為了建立初始資料庫,呼叫SQLAlchemy.create_all() 方法來建立表格和資料庫:

   db.create_all()
登入後複製

您的資料庫已經產生。現在來創建一些用戶

admin = User('admin', 'admin@example.com')
guest = User('guest', 'guest@example.com')
登入後複製

但是它們還沒有真正地寫入到資料庫中,因此讓我們來確保它們已經寫入到資料庫中

db.session.add(admin)
db.session.add(guest)
db.session.commit()
登入後複製

2.創建關係型資料庫表

SQLAlchemy 連結到關係型資料庫,關係型資料最擅長的東西就是關係。因此,我們將建立一個使用兩張相互關聯的表的應用作為範例。
最常見的關係就是一對多的關係。因為關係在它們建立之前就已經聲明,您可以使用 字串來指稱還沒有創建的類別
關係使用 relationship() 函數表示。然而外鍵必須用類別 sqlalchemy.schema.ForeignKey 來單獨宣告.

from datetime import datetime
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
import pymysql
from sqlalchemy import desc

app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:sheen@localhost/zaj_sql'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
bootstrap = Bootstrap(app)

class User(db.Model):
    id = db.Column(db.Integer,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    passwd = db.Column(db.String(100))
    add_time = db.Column(db.DATETIME,default=datetime.now())
    gender = db.Column(db.BOOLEAN,default=True)
    role_id = db.Column(db.INTEGER,db.ForeignKey('role.id'))

    def __repr__(self):
        return '<user:>' %(self.name)

class Role(db.Model):
    id = db.Column(db.INTEGER,autoincrement=True,primary_key=True)
    name = db.Column(db.String(50),unique=True)
    users = db.relationship('User',backref='role')
    # 给Role模型添加users属性
    # backref 是定义反向引用
        def __repr__(self):
        return '<role:>' % (self.name)
if __name__ =='__main__':
    # 1. 创建数据库表
    # db.drop_all()
    # db.create_all()
    # # 2. 创建role数据库表数据
    role_1 = Role(name='超级会员')
    role_2 = Role(name='普通会员')

    db.session.add(role_1)
    db.session.add(role_2)

    db.session.commit()

    # # # 3. 添加user表内数据,100个用户,50个为超级会员,50个为普通会员
    for i in range(1,13):
        if i%2 == 0:
            u = User(name='sheen'+str(i),passwd='sheen',role_id=1)
            db.session.add(u)
        else:
            u = User(name='star'+str(i),passwd='star',role_id=2)
            db.session.add(u)
    db.session.commit()</role:></user:>
登入後複製

backref 是定義反向引用,可以透過User.role存取Role物件和屬性。
python中flask_sqlalchemy操作資料庫的方法範例

python中flask_sqlalchemy操作資料庫的方法範例

查詢所有資料

    print('角色',Role.query.all())
    print('用户',User.query.all())
登入後複製

根據條件查詢資料

    # select * from tablename where xxx=xxxxx
    print(User.query.filter_by(role_id=1).all())
    print(Role.query.filter_by().all())
    print(User.query.filter_by(role_id=2).all())
登入後複製

python中flask_sqlalchemy操作資料庫的方法範例

對於找到的資料進行更新

 print('进行数据更新',end='\n')
    u =User.query.filter_by(name='sheen2').first()
    print(u)
    u.passwd = '123'
    db.session.add(u)
    db.session.commit()
登入後複製

python中flask_sqlalchemy操作資料庫的方法範例

篩選資料方法2(filter),這種方法可以看見原生的sql語句

    print('数据筛选', end='\n')
    user = User.query.filter(User.role_id==1)
    print(user)
登入後複製

python中flask_sqlalchemy操作資料庫的方法範例

#對於查詢的資訊進行顯示限制

    print('限制查询数据的显示', end='\n')

    users = User.query.filter_by(role_id=1).limit(3).all()
    print(users)
登入後複製

對於查詢的資訊進行排序輸出(預設情況由小到大進行排序), 如果想要由大到小: desc(User. add_time)

    print('数据再处理', end='\n')
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).all()
    print(users)
登入後複製

多個過濾函數

print('多个过滤函数', end='\n')
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).limit(3).offset(1).all()
    print(users)
    users = User.query.filter_by(role_id=1).order_by(desc(User.name)).slice(1,4).all()
    print(users)
登入後複製

python中flask_sqlalchemy操作資料庫的方法範例

#分頁,第一個參數表示顯示第幾頁數據,第二個參數表示每頁顯示多少條資料

    print('分页显示', end='\n')

    users = User.query.paginate(1,5)
    print(users.items)
    users = User.query.paginate(2, 5)
    print(users.items)
登入後複製

python中flask_sqlalchemy操作資料庫的方法範例

#

以上是python中flask_sqlalchemy操作資料庫的方法範例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Python:自動化,腳本和任務管理 Python:自動化,腳本和任務管理 Apr 16, 2025 am 12:14 AM

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

vscode 可以在 mac 上嗎 vscode 可以在 mac 上嗎 Apr 15, 2025 pm 07:45 PM

VS Code 在 macOS 上表現良好,可提升開發效率。安裝和配置步驟包括:安裝 VS Code 並進行配置。安裝特定語言的擴展(如 JavaScript 的 ESLint)。謹慎安裝擴展,避免過多導致啟動變慢。學習基本功能,如 Git 集成、終端和調試器。設置合適的主題和代碼字體。注意潛在問題:擴展兼容性、文件權限等。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

vs code 可以運行 python 嗎 vs code 可以運行 python 嗎 Apr 15, 2025 pm 08:21 PM

是的,VS Code 可以運行 Python 代碼。為在 VS Code 中高效運行 Python,請完成以下步驟:安裝 Python 解釋器並配置環境變量。安裝 VS Code 中的 Python 擴展。通過命令行在 VS Code 的終端中運行 Python 代碼。利用 VS Code 的調試功能和代碼格式化來提高開發效率。採用良好的編程習慣並使用性能分析工具優化代碼性能。

vscode用的是什麼語言 vscode用的是什麼語言 Apr 15, 2025 pm 11:03 PM

Visual Studio Code (VSCode) 由 Microsoft 開發,使用 Electron 框架構建,主要以 JavaScript 編寫。它支持廣泛的編程語言,包括 JavaScript、Python、C 、Java、HTML、CSS 等,並且可以通過擴展程序添加對其他語言的支持。

vscode如何執行代碼 vscode如何執行代碼 Apr 15, 2025 pm 09:51 PM

在 VS Code 中執行代碼只需六個步驟:1. 打開項目;2. 創建和編寫代碼文件;3. 打開終端;4. 導航到項目目錄;5. 使用適當的命令執行代碼;6. 查看輸出。

See all articles