91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

flask?SQLAlchemy怎么連接數據庫

發布時間:2023-03-08 10:51:42 來源:億速云 閱讀:63 作者:iii 欄目:開發技術

這篇文章主要介紹了flask SQLAlchemy怎么連接數據庫的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇flask SQLAlchemy怎么連接數據庫文章都會有所收獲,下面我們一起來看看吧。

介紹

flask介紹

Flask是一個輕量級的Python Web框架,它基于Werkzeug和Jinja2庫構建,因其簡潔、靈活、易擴展等特性而廣受歡迎。

Flask的核心設計理念是"micro",即"微型"。相比于其他大型的Web框架,Flask僅提供了最基本的功能集,如路由、請求與響應處理、模板渲染等,但同時也允許開發者通過插件或擴展來添加更多的功能。這種設計方式使得Flask非常適合構建小型的Web應用程序、API服務以及原型驗證等場景。

除此之外,Flask還具有以下優點:

  • 簡單易學:Flask的API設計非常簡單,易于掌握和使用。

  • 高度靈活:Flask允許開發者根據實際需求自由選擇需要引入的插件或庫,從而實現高度靈活的定制化。

  • 輕量級高效:Flask的核心代碼很小,運行速度非常快,可以應對高并發的訪問。

  • 豐富的擴展庫:Flask擁有龐大的擴展庫,涵蓋了數據庫、表單驗證、用戶認證、緩存等各個方面的功能。

總之,Flask是一個簡單、靈活、可擴展的Python Web框架,適用于各種規模的Web應用程序開發。它的設計思想和哲學使得開發者可以快速上手、高效開發,并且能夠根據實際需求進行自由擴展。

SQLAlchemy介紹

SQLAlchemy是一個Python的ORM(對象關系映射)工具,它提供了一種將關系數據庫映射到Python對象的方式。ORM是一種編程模式,使得我們可以通過使用面向對象的語法來操作關系型數據庫,從而抽象出底層的SQL查詢。

SQLAlchemy提供了一種高級、Pythonic的接口,讓程序員能夠使用Python代碼進行數據庫操作,而無需直接編寫SQL。同時,它還提供了對多個關系數據庫的支持,包括MySQL、PostgreSQL、Oracle、Microsoft SQL Server等。

SQLAlchemy提供兩種不同的API:Core API和ORM API。Core API提供了底層的SQL表達式和查詢構建,ORM API則提供了更高級別的面向對象的數據訪問和持久化。

使用SQLAlchemy,開發者可以輕松地創建和管理數據庫表、執行復雜的查詢、實現事務處理、維護數據完整性等。它還支持連接池、線程安全、自動回滾等特性,以提高應用程序的性能和可靠性。

總之,SQLAlchemy是一個強大、靈活、易于使用的Python ORM框架,是Python開發者在處理關系型數據庫時不可或缺的工具之一。

Flask-SQLAlchemy介紹

Flask-SQLAlchemy是一個為Flask應用程序提供SQLAlchemy支持的擴展,它通過將SQLAlchemy集成到Flask中,讓開發者可以更加方便地使用ORM(對象關系映射)模型來操作數據庫。

Flask-SQLAlchemy提供了一種面向對象的方式來處理數據庫,用戶可以通過定義Python類來映射數據庫表格。這些類通常被稱為“模型”,每個模型對應一個數據庫表格,其中類屬性對應表格的列。

Flask-SQLAlchemy的主要特性包括:

  • 簡單易用:Flask-SQLAlchemy提供了簡潔、易于理解和學習的API,用戶可以快速上手并開始構建數據庫模型。

  • 數據庫遷移:Flask-SQLAlchemy支持集成Flask-Migrate擴展實現數據庫結構的自動遷移,以方便管理數據庫結構的變化。

  • 數據庫會話管理:Flask-SQLAlchemy在Flask應用中提供了SQLAlchemy的會話管理功能,開發者可以輕松地進行數據庫操作。

  • 查詢優化:Flask-SQLAlchemy提供了靈活的查詢API,支持多種查詢方式和過濾器,開發者可以根據實際需求自由選擇。

總之,Flask-SQLAlchemy是一個非常強大、靈活且易于使用的ORM框架,對于使用Flask框架的Web應用程序開發人員而言,它是一個不可或缺的工具。使用Flask-SQLAlchemy,開發者可以更加方便、高效地實現數據持久化,同時也可以避免手動編寫低效和容易出錯的SQL語句。

連接步驟

使用Flask-SQLAlchemy,需要先安裝Flask和SQLAlchemy以及Flask-SQLAlchemy擴展。可以使用pip命令來安裝它們:

pip install flask
pip install sqlalchemy
pip install flask_sqlalchemy

安裝完成后,可以按照以下步驟使用Flask-SQLAlchemy:

1.在Flask應用程序中導入flask_sqlalchemy模塊并創建一個SQLAlchemy對象:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

2.創建數據庫模型(也稱為“表”),定義一個繼承自db.Model的Python類,并將類屬性定義為列。例如,下面的代碼定義了一個名為User的模型:

class User(db.Model):
    __tablename__ = 'user'
    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)

3.創建數據庫表格,可以使用Flask-Migrate擴展來進行數據庫遷移管理。例如,可以運行以下命令創建遷移腳本:

flask db init #初始化,只需要一次
flask db migrate #只要更改上邊的模型了,就需要執行這條和下條命令
flask db upgrade

4.使用數據庫,可以使用db.session來進行數據庫操作。例如,下面的代碼將創建一個新的用戶:

new_user = User(username='xiaogao', email='1443004194@qq.com')
db.session.add(new_user)
db.session.commit()

5.在Flask應用程序中使用數據庫,可以在Flask視圖函數中使用數據庫進行數據查詢、更新等操作。例如,下面的代碼查詢所有的用戶并將它們渲染到HTML頁面中:

@app.route('/users')
def users():
    all_users = User.query.all()
    return render_template('users.html', users=all_users)

增刪改查操作

1.增加數據

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

# 定義數據表類
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    age = db.Column(db.Integer)

# 創建新用戶
new_user = User(name='John', age=30)

# 添加到session并提交
db.session.add(new_user)
db.session.commit()

2.查詢數據

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

db = SQLAlchemy(app)

# 定義數據表類
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    age = db.Column(db.Integer)
#根據id查詢
user=User.query.get(1)#查詢id為1的用戶
    
# 查詢所有用戶
all_users = User.query.all()
#遍歷
for user in all_users:
    print(f'{user.id}:{user.name}:{user.age}')
    
# 查詢指定用戶
user = User.query.filter_by(name='John').first()

# 查詢年齡在20到30之間的用戶
users = User.query.filter(User.age >= 20, User.age <= 30).all()

3.修改數據(更新數據)

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

# 定義數據表類
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    age = db.Column(db.Integer)

# 查詢需要修改的用戶
user = User.query.filter_by(name='John').first()

# 修改用戶信息
user.age = 35

# 提交修改
db.session.commit()

4.刪除數據

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

# 定義數據表類
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    age = db.Column(db.Integer)

# 查詢需要刪除的用戶
user = User.query.filter_by(name='John').first()

# 刪除用戶
db.session.delete(user)

# 提交刪除
db.session.commit()

外鍵綁定與ORM關系映射

1.一對一關系

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

# 定義數據表類
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    age = db.Column(db.Integer)

class Post(db.Model):
    __tablename__ = 'post'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(50))
    content = db.Column(db.Text)
# Post表的user_id外鍵綁定User表的id
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    
    
# 根據用戶創建帖子
user = User(name='John', age=30)
db.session.add(user)
db.session.commit()

post = Post(title='Hello World', content='This is my first post.', user_id=user.id)
db.session.add(post)
db.session.commit()

# 查詢帖子及其對應的用戶信息
post = Post.query.first()
print(post.title)
print(post.user.name)

User類包含了一個posts屬性,指向了與該用戶相關的所有帖子。而Post類包含了一個user屬性,指向了創建該帖子的用戶。通過這種方式,可以在Python對象之間建立關系,方便進行查詢和操作。

2.一對多關系

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

# 數據庫配置
HOSTNAME = '127.0.0.1'
PORT = '3306'
DATABASE = 'flask_study'
USERNAME = 'root'
PASSWORD = 'root'

DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    profile = db.relationship('Profile', backref='user', uselist=False)
    # db.backref
    # 1. 在反向引用的時候,如果需要傳遞一些其他的參數,那么就需要用到這個函數,否則不需要使用,只要在relationship的backref參數上,設置反向引用的名稱就可以了。
    # 2. uselist=False:代表反向引用的時候,不是一個列表,而是一個對象。
    

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    content = db.Column(db.Text)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

    
user = User(name='John')
post = Post(title='Hello World', content='This is my first post.')
user.posts.append(post)
db.session.add(user)
db.session.commit()

Post模型通過user_id外鍵引用User模型。在User模型中,我們使用posts屬性定義了與Post模型的關系,并使用backref參數創建一個名為user的反向引用。這樣,我們可以通過user.posts從任何一個用戶對象訪問其所有文章對象。

關于“flask SQLAlchemy怎么連接數據庫”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“flask SQLAlchemy怎么連接數據庫”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

常山县| 遂昌县| 精河县| 达州市| 玉树县| 绵阳市| 周口市| 池州市| 陆川县| 齐齐哈尔市| 腾冲县| 潜山县| 遂川县| 罗江县| 五峰| 龙井市| 石泉县| 新营市| 沅陵县| 澄江县| 大厂| 长阳| 宣威市| 南漳县| 绍兴市| 唐河县| 梅河口市| 秦皇岛市| 黔南| 德安县| 浦北县| 阆中市| 双城市| 息烽县| 金溪县| 类乌齐县| 余庆县| 英超| 鹤壁市| 乌恰县| 明水县|