最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

flask連接并操作數(shù)據(jù)庫的實現(xiàn)示例

 更新時間:2024年12月31日 09:08:27   作者:奈何不吃魚  
本文詳細介紹了在Flask框架中連接并操作數(shù)據(jù)庫的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

在Flask框架中,數(shù)據(jù)庫的操作是一個核心功能,它允許開發(fā)者與后端數(shù)據(jù)庫進行交互,執(zhí)行數(shù)據(jù)的增刪改查操作。本文將詳細介紹如何在Flask中連接并操作數(shù)據(jù)庫,包括使用Flask-SQLAlchemy擴展和直接使用MySQL的Python驅動。

常見的有三種操作方法:使用 SQLAlchemy、使用 Flask-SQLAlchemy 連接 MySQL和直接使用 MySQL 的 Python 驅動,本篇先講述如何使用SQLAlchemy進行連接,后續(xù)會對其他方式進行講解。

一、 安裝必要的庫

首先,安裝Flask-SQLAlchemy和MySQL的Python驅動??梢酝ㄟ^以下命令安裝:

pip install -U SQLAlchemy
pip install pymysql  # Python3 使用pymysql
pip install mysqlclient

二、配置數(shù)據(jù)庫連接

在Flask應用中,需要配置數(shù)據(jù)庫的地址(一般情況下,不建議直接在項目頭部配置,此處只為演示,建議寫在config.py中進行變量配置),這里的username等信息需要換成實際信息:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/dbname'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

 三、定義模型

在Flask-SQLAlchemy中,模型是數(shù)據(jù)庫表的Python類,每個模型類代表數(shù)據(jù)庫中的一張表。例如:

class User(db.Model):
    __tablename__ = 'users'
    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 f'<User {self.username}>'

這里定義了一個用戶模型,對應數(shù)據(jù)庫中的用戶信息表,屬性包括:id、用戶名和email,對應的mysql表如下:

CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(80) NOT NULL,
  `email` VARCHAR(120) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE INDEX `username_unique` (`username` ASC),
  UNIQUE INDEX `email_unique` (`email` ASC)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

四、操作數(shù)據(jù)庫

配置好以上內容后,我們就可以通過SQLAlchemy 提供的 ORM 功能操作數(shù)據(jù)庫了,我們簡單的用CURD操作進行測試 ~

1.添加用戶

# 添加用戶路由
@app.route('/add_user', methods=['POST'])
def add_user():
    data = request.get_json()
    username = data.get('username')
    email = data.get('email')

    if not username or not email:
        return '缺少用戶名或郵箱地址', 400

    # 檢查 email 是否已存在
    existing_user = User.query.filter_by(email=email).first()
    if existing_user:
        return '郵箱已存在,無法添加用戶', 400

    new_user = User(username=username, email=email)
    db.session.add(new_user)
    try:
        db.session.commit()
    except IntegrityError:
        db.session.rollback()
        return '插入失敗,可能是用戶名或郵箱重復', 400
    except Exception as e:
        db.session.rollback()
        return f'數(shù)據(jù)庫錯誤: {str(e)}', 500

    return '用戶添加成功'

2.刪除用戶

# 刪除用戶路由
@app.route('/delete_user/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    user = User.query.get(user_id)
    if not user:
        return '用戶不存在', 404

    db.session.delete(user)
    db.session.commit()
    return '用戶刪除成功'

3.更新用戶信息

# 更新用戶路由
@app.route('/update_user/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    user = User.query.get(user_id)
    if not user:
        return '用戶不存在', 404

    data = request.get_json()
    new_username = data.get('username')
    new_email = data.get('email')

    # 更新用戶名和郵箱
    if new_username:
        user.username = new_username
    if new_email:
        existing_user = User.query.filter_by(email=new_email).first()
        if existing_user and existing_user.id != user_id:
            return '郵箱已存在,無法更新用戶信息', 400
        user.email = new_email

    try:
        db.session.commit()
    except IntegrityError:
        db.session.rollback()
        return '更新失敗,可能是用戶名或郵箱重復', 400
    except Exception as e:
        db.session.rollback()
        return f'數(shù)據(jù)庫錯誤: {str(e)}', 500

    return '用戶更新成功'

4查詢所有用戶

# 獲取所有用戶路由
@app.route('/get_all', methods=['GET'])
def get_users():
    users = User.query.all()
    return '<br>'.join([f'{user.username} ({user.email})' for user in users])

五、測試結果

此時查詢發(fā)生變化

至此,我們完成了使用flask連接并操作數(shù)據(jù)庫,其實使用python開發(fā)后端項目非常的輕松,相比結構縝密的springboot,偶爾使用flask寫一些小項目也是不錯的選擇哦。

到此這篇關于flask連接并操作數(shù)據(jù)庫的實現(xiàn)示例的文章就介紹到這了,更多相關flask連接操作數(shù)據(jù)庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Python中time()方法的使用的教程

    詳解Python中time()方法的使用的教程

    這篇文章主要介紹了詳解Python中time()方法的使用的教程,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • python 6.7 編寫printTable()函數(shù)表格打印(完整代碼)

    python 6.7 編寫printTable()函數(shù)表格打印(完整代碼)

    這篇文章主要介紹了python 6.7 編寫一個名為printTable()的函數(shù) 表格打印,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Python中np.where()的使用方式

    Python中np.where()的使用方式

    這篇文章主要介紹了Python中np.where()的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Django權限機制實現(xiàn)代碼詳解

    Django權限機制實現(xiàn)代碼詳解

    這篇文章主要介紹了Django權限機制實現(xiàn)代碼詳解,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python實現(xiàn)順序查找的示例代碼

    Python實現(xiàn)順序查找的示例代碼

    順序查找(Sequential?Search)是一種簡單直觀的搜索算法,用于在無序數(shù)組中查找特定元素,本文將介紹順序查找的基本原理,并通過Python代碼進行詳細講解,需要的可以參考一下
    2023-08-08
  • Django?中使用日志的方法

    Django?中使用日志的方法

    Django?使用?Python?內置的?logging?模塊處理系統(tǒng)日志,所以,只要掌握了?Python?中的?logging?模塊,基本也就能夠在?django?中使用日志了,本文重點給大家介紹django?中使用日志的方法,感興趣的朋友一起看看吧
    2022-07-07
  • Python基于template實現(xiàn)字符串替換

    Python基于template實現(xiàn)字符串替換

    這篇文章主要介紹了Python基于template實現(xiàn)字符串替換,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Python 3.7新功能之dataclass裝飾器詳解

    Python 3.7新功能之dataclass裝飾器詳解

    這篇文章主要給大家介紹了關于Python 3.7新功能之dataclass裝飾器的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • 以文檔處理為例講解豆包API調用教程(Python)

    以文檔處理為例講解豆包API調用教程(Python)

    這篇文章主要介紹了如何在Linux服務器上配置和使用豆包大模型的API,通過API處理200萬字的文檔,展現(xiàn)了技術的發(fā)展和應用,需要的朋友可以參考下
    2025-01-01
  • pyqt5實現(xiàn)按鈕添加背景圖片以及背景圖片的切換方法

    pyqt5實現(xiàn)按鈕添加背景圖片以及背景圖片的切換方法

    今天小編就為大家分享一篇pyqt5實現(xiàn)按鈕添加背景圖片以及背景圖片的切換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06

最新評論

分宜县| 张家口市| 昌图县| 南川市| 周口市| 长沙市| 瓮安县| 清水河县| 西盟| 特克斯县| 伊金霍洛旗| 承德县| 仲巴县| 克拉玛依市| 渭南市| 博野县| 营口市| 靖宇县| 华宁县| 连平县| 庆阳市| 平顺县| 温宿县| 辽宁省| 康马县| 公主岭市| 长岭县| 高密市| 青海省| 黄龙县| 五常市| 青浦区| 万载县| 开化县| 伊宁市| 绥滨县| 沂南县| 镇原县| 揭东县| 安塞县| 韶山市|