国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flask創(chuàng)建數(shù)據(jù)庫連接池

這篇具有很好參考價值的文章主要介紹了flask創(chuàng)建數(shù)據(jù)庫連接池。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

flask創(chuàng)建數(shù)據(jù)庫連接池,flask,python,數(shù)據(jù)庫,oracle

flask創(chuàng)建數(shù)據(jù)庫連接池

在Python中,您可以使用 Flask-SQLAlchemy 這個擴(kuò)展來創(chuàng)建一個數(shù)據(jù)庫連接池。Flask-SQLAlchemy 是一個用于 Flask 框架的 SQLAlchemy 操作封裝,實(shí)現(xiàn)了 ORM(Object Relational Mapper)。ORM 主要用于將類與數(shù)據(jù)庫中的表建立映射關(guān)系,使得我們可以非常方便地通過操作類來操作數(shù)據(jù)庫。

以下是 SQLAlchemy 的一些關(guān)鍵特點(diǎn):

  • ORM(Object-Relational Mapping):SQLAlchemy 提供了一套完整的 ORM 系統(tǒng),它可以將數(shù)據(jù)庫表映射為 Python 類,將表中的行映射為這些類的實(shí)例,將列映射為實(shí)例的屬性。通過這種映射,你可以使用面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫,而不必編寫 SQL 語句。
  • 數(shù)據(jù)庫抽象:SQLAlchemy 提供了一套數(shù)據(jù)庫抽象層,它可以適應(yīng)多種數(shù)據(jù)庫系統(tǒng),如 MySQL、PostgreSQL、SQLite 等。通過這個抽象層,你可以使用相同的 API 操作不同的數(shù)據(jù)庫系統(tǒng)。
  • SQL 表達(dá)式語言:除了 ORM,SQLAlchemy 還提供了一套 SQL 表達(dá)式語言,你可以用它來編寫 SQL 語句。這個表達(dá)式語言提供了比原生 SQL 更高級的抽象,可以更方便地編寫復(fù)雜的 SQL 語句。
  • 連接池和事務(wù)管理:SQLAlchemy 提供了一套連接池和事務(wù)管理機(jī)制,你可以用它來管理和復(fù)用數(shù)據(jù)庫連接,處理事務(wù)。

在許多 Python web 框架(如 Flask、Pyramid 等)中,SQLAlchemy 都是默認(rèn)或推薦的數(shù)據(jù)庫操作庫。它提供了許多強(qiáng)大的功能,使得數(shù)據(jù)庫操作變得非常方便和高效。

以下是一種創(chuàng)建 Flask-SQLAlchemy 連接池的方式:

  1. 安裝 Flask-SQLAlchemy。如果您還沒有安裝,可以使用以下命令進(jìn)行安裝:
pip install Flask-SQLAlchemy
  1. 在你的 Flask 應(yīng)用中設(shè)置 SQLAlchemy 的數(shù)據(jù)庫 URI 和連接池的大?。?/li>
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
app.config['SQLALCHEMY_POOL_SIZE'] = 20
db = SQLAlchemy(app)

上述代碼中 'mysql://username:password@localhost/db_name' 是你的數(shù)據(jù)庫連接信息,你需要替換為實(shí)際的值。SQLALCHEMY_POOL_SIZE 是連接池的大小,你可以根據(jù)實(shí)際需要設(shè)置。

  1. 使用 db 對象進(jìn)行數(shù)據(jù)庫操作。例如,定義一個模型:
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return '<User %r>' % self.username
  1. 您可以使用 db.session 來進(jìn)行數(shù)據(jù)庫事務(wù),如增刪查改等:
user = User(username='test', email='test@example.com')
db.session.add(user)
db.session.commit()

這樣就實(shí)現(xiàn)了一個 Flask 的 SQLAlchemy 數(shù)據(jù)庫連接池。請注意,如果數(shù)據(jù)庫是 PostgreSQL 或其他類型,需要更改 SQLALCHEMY_DATABASE_URI 中的 'mysql://' 部分。

User模型解釋

上述代碼中的 User 是一個 SQLAlchemy 的模型,它表示了一個數(shù)據(jù)庫表。在這個例子中,這個表的名稱默認(rèn)是 “user”,并且它有三個字段:id,username 和 email。

  • class User(db.Model): 這一行定義了 User 類,該類繼承自 db.Model,所以它具有 SQLAlchemy Model 的所有屬性和方法。
  • id = db.Column(db.Integer, primary_key=True) 這一行定義了一個名為 “id” 的列。該列的類型是 Integer,并且它被設(shè)置為表的主鍵。
  • username = db.Column(db.String(80), unique=True, nullable=False) 這一行定義了一個名為 “username” 的列。該列的類型是 String,長度最大為80。unique=True 意味著這個表中的 “username” 必須是唯一的,nullable=False 意味著這個列不能為 NULL。
  • email = db.Column(db.String(120), unique=True, nullable=False) 這一行定義了一個名為 “email” 的列。這個列的類型是 String,長度最大為120。同樣地,unique=Truenullable=False 分別表示這個列必須具有唯一值,并且不能為 NULL。
  • def __repr__(self): 這是一個魔法方法,當(dāng)你嘗試打印一個 User 對象時,Python 會調(diào)用這個方法。在這個例子中,它將返回一個字符串,如 <User 'username'>。

這個 User 模型可以用來操作數(shù)據(jù)庫中的用戶表。例如,你可以使用這個模型來查詢用戶,添加新的用戶,或者刪除用戶。

下面是一個刪除用戶的例子:

user = User.query.filter_by(username='test').first()  # 查詢用戶名為 'test' 的用戶
if user:
    db.session.delete(user)  # 如果用戶存在,就刪除這個用戶
    db.session.commit()  # 提交事務(wù)
  • user = User.query.filter_by(username='test').first():這行代碼查詢數(shù)據(jù)庫中用戶名為 ‘test’ 的用戶。filter_by() 是一個過濾方法,它返回滿足條件的結(jié)果。first() 是一個查詢方法,它返回查詢結(jié)果的第一項(xiàng)。如果查詢結(jié)果為空,那么 first() 將返回 None。
  • if user::這個判斷語句檢查查詢結(jié)果是否為 None。如果 userNone,說明數(shù)據(jù)庫中沒有用戶名為 ‘test’ 的用戶,因此我們不能刪除它。如果 user 不是 None,說明我們找到了一個用戶名為 ‘test’ 的用戶,因此我們可以刪除它。
  • db.session.delete(user):這行代碼刪除查詢到的用戶。delete() 方法接受一個 SQLAlchemy 模型的實(shí)例作為參數(shù),并將其標(biāo)記為待刪除。
  • db.session.commit():這行代碼提交事務(wù),將所有的改動(包括刪除操作)保存到數(shù)據(jù)庫。如果你沒有調(diào)用 commit(),那么 delete() 的改動不會被保存到數(shù)據(jù)庫。

請注意,如果你嘗試刪除一個不存在的對象,SQLAlchemy 會拋出一個異常。所以在刪除之前,你應(yīng)該檢查你的對象是否存在。

補(bǔ)充

雖然這個User類代表了數(shù)據(jù)庫中的一個表,但是并不意味著這個表已經(jīng)在數(shù)據(jù)庫中創(chuàng)建了。在你第一次操作這個表之前,你需要確保這個表已經(jīng)在數(shù)據(jù)庫中創(chuàng)建。你可以使用 db.create_all() 方法來自動創(chuàng)建所有的表,或者你也可以手動在數(shù)據(jù)庫中創(chuàng)建這個表:

  1. 使用 db.create_all() 方法。這個方法會自動創(chuàng)建所有定義的但尚未在數(shù)據(jù)庫中存在的表。這個方法通常在 Flask 應(yīng)用啟動時運(yùn)行一次,例如:

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/db_name'
    db = SQLAlchemy(app)
    
    class User(db.Model):
        # ...
    
    db.create_all()
    
  2. 手動在數(shù)據(jù)庫中創(chuàng)建這個表。你可以通過 SQL 語句或者數(shù)據(jù)庫管理工具在數(shù)據(jù)庫中創(chuàng)建這個表。

如果你嘗試對一個在數(shù)據(jù)庫中不存在的表進(jìn)行操作(如查詢、添加記錄或刪除記錄),SQLAlchemy 會拋出一個錯誤。所以在操作表之前,你應(yīng)該確保這個表已經(jīng)在數(shù)據(jù)庫中存在。文章來源地址http://www.zghlxwxcb.cn/news/detail-618501.html

到了這里,關(guān)于flask創(chuàng)建數(shù)據(jù)庫連接池的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Flask 連接數(shù)據(jù)庫,使用Flask-Migrate實(shí)現(xiàn)數(shù)據(jù)庫遷移及問題匯總】

    Flask 連接數(shù)據(jù)庫,使用Flask-Migrate實(shí)現(xiàn)數(shù)據(jù)庫遷移 安裝Flask-Migrate插件 使用Flask-Migrate步驟 app.py主要用于數(shù)據(jù)庫連接 model.py 中導(dǎo)入了 db,作用是存儲一個User類 ,用于生成表頭。 manager.py用于數(shù)據(jù)遷移管理,運(yùn)行后將生成一個文件夾。 Flask-Migrate運(yùn)行 問題匯總 問題一:flask_mig

    2024年01月16日
    瀏覽(57)
  • flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)

    flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)

    Flask沒有指定使用的數(shù)據(jù)庫,不像django提供了orm數(shù)據(jù)庫抽象層,可以直接采用對象的方式操作數(shù)據(jù)庫。但為了開發(fā)效率,在開發(fā)Flask項(xiàng)目中一般會選擇 SQLALchemy 來操作數(shù)據(jù)庫,類似django的ORM. SQLALchemy實(shí)際是對數(shù)據(jù)庫的抽象,讓開發(fā)者不直接使用sql語句進(jìn)行開發(fā),而是通過Pytho

    2024年01月25日
    瀏覽(18)
  • Oracle數(shù)據(jù)庫創(chuàng)建存儲過程

    下面是一個遷移數(shù)據(jù)庫數(shù)據(jù)的存儲過程: 存儲過程中用到的 while 循環(huán)邏輯: ?

    2024年02月11日
    瀏覽(20)
  • Flask 數(shù)據(jù)庫 連接池、DBUtils、http 連接池

    Flask 數(shù)據(jù)庫 連接池、DBUtils、http 連接池

    DBUtils 是一套用于管理 數(shù)據(jù)庫 \\\" 連接池 \\\" 的Python包,為 \\\"高頻度、高并發(fā)\\\"? 的數(shù)據(jù)庫訪問提供更好的性能,可以自動管理連接對象的創(chuàng)建和釋放。 并允許對非線程安全的數(shù)據(jù)庫接口進(jìn)行線程安全包裝和連接。 該連接可在各種多線程環(huán)境中使用。 使用場景:如果使用的是流行

    2024年02月04日
    瀏覽(19)
  • flask-sqlalchemy連接數(shù)據(jù)庫

    flask-sqlalchemy連接數(shù)據(jù)庫

    1、安裝flask_sqlalchemy和pymysql包 2、進(jìn)行配置 使用Flask-SQLAlchemy擴(kuò)展操作數(shù)據(jù)庫,首先需要通過URL建立數(shù)據(jù)庫連接,必須保存到Flask配置對象的SQLALCHEMY_DATABASE_URI中。 其中HOSTNAME為路由地址 PORT為端口號,我在創(chuàng)建數(shù)據(jù)庫時沒有更改,所以用的默認(rèn)的3306端口號 DATABASE為數(shù)據(jù)庫名字

    2024年02月06日
    瀏覽(27)
  • Navicat連接Oracle數(shù)據(jù)庫

    Navicat連接Oracle數(shù)據(jù)庫

    打開服務(wù)里面找到Oracle服務(wù) OracleServerXE或者OracleServerTTL? 創(chuàng)建數(shù)據(jù)庫連接 連接名默認(rèn)自己起 主機(jī)選擇本地 端口默認(rèn) 服務(wù)名在服務(wù)中可以找到輸入后綴 用戶名默認(rèn)都是system 密碼是創(chuàng)建oracle時候填寫的口令 點(diǎn)擊測試連接即可

    2024年02月04日
    瀏覽(28)
  • Java連接Oracle數(shù)據(jù)庫

    Java連接Oracle數(shù)據(jù)庫

    目錄 第一步:導(dǎo)入jar包 ?第二步:配置數(shù)據(jù)庫參數(shù) Oracle配置參數(shù):xml中配置 Mysql配置參數(shù):xml方式配置 第三步:寫一個工具類JDBCUtils 第四步:連接數(shù)據(jù)庫 commons-dbutils-1.6.jar,jar包大家就到網(wǎng)上搜吧 Oracle配置參數(shù):xml中配置 重點(diǎn)一: Oracle數(shù)據(jù)庫的JDBC連接分為三種,服務(wù)名

    2024年02月13日
    瀏覽(27)
  • flask-session、數(shù)據(jù)庫連接池

    flask-session、數(shù)據(jù)庫連接池

    flask 自帶session---》以cookie的形式放到了瀏覽器中---》加密 真正的session,是在服務(wù)端存儲 ?? ?-django中存在djangosession表中 ? ? -flask中,使用第三方,保存在---》redis中---》flask-session 使用步驟 高版本的flask出現(xiàn)一個問題: ????????用高版本:在app中放一個參數(shù) ?app.sessio

    2024年02月14日
    瀏覽(16)
  • 【Oracle】使用 SQL Developer 連接 Oracle 數(shù)據(jù)庫

    SQL Developer 是 Oracle 官方推出的一款免費(fèi)的數(shù)據(jù)庫開發(fā)工具,它提供了豐富的數(shù)據(jù)庫開發(fā)功能,其中包括連接 Oracle 數(shù)據(jù)庫的功能。 在本文中,我們將從多個方面詳細(xì)闡述如何使用 SQL Developer 連接 Oracle 數(shù)據(jù)庫。 在連接 Oracle 數(shù)據(jù)庫前,需要需要做一些準(zhǔn)備工作,包括安裝 SQ

    2024年02月06日
    瀏覽(24)
  • C# 連接Oracle數(shù)據(jù)庫方法

    C# 連接Oracle數(shù)據(jù)庫方法

    C# 連接oracle數(shù)據(jù)庫常用的三種方法有三種: ? ? 一、Oracle.ManagedDataAccess.dll:Oracle官方提供的oracle數(shù)據(jù)庫訪問組件,不存在其他依賴dll庫,推薦該方法最為重要的是: 它 不需要安裝oracle客戶端,也不區(qū)分x86位和x64位 , 直接就能用,連上其他電腦或者服務(wù)端oracle數(shù)據(jù)庫。 ?

    2023年04月22日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包