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

Python調(diào)用DeepSeek?API實現(xiàn)對本地數(shù)據(jù)庫的AI管理

 更新時間:2025年02月05日 09:56:15   作者:mosquito_lover1  
這篇文章主要為大家詳細介紹了Python如何基于DeepSeek模型實現(xiàn)對本地數(shù)據(jù)庫的AI管理,文中的示例代碼簡潔易懂,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

場景描述

基于DeepSeek模型,實現(xiàn)對本地數(shù)據(jù)庫的AI管理。

實現(xiàn)思路

1、本地python+flask搭建個WEB,配置數(shù)據(jù)源。

2、通過DeepSeek模型根據(jù)用戶輸入的文字需求,自動生成SQL語句。

3、通過SQL執(zhí)行按鈕,實現(xiàn)對數(shù)據(jù)庫的增刪改查。

前置條件

到DeepSeek官網(wǎng)的API開放平臺注冊,完成以下配置:

DEEPSEEK_API_KEY=your-deepseek-api-key
DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat

效果展示

核心代碼

from flask import Blueprint, render_template, request, jsonify, current_app
from .database import DatabaseManager
from .config import DatabaseConfig
import requests
from .sql_generator import SQLGenerator  # 添加這行導(dǎo)入
 
main = Blueprint('main', __name__)
db_manager = DatabaseManager()
 
@main.route('/')
def index():
    return render_template('index.html')
 
@main.route('/connect', methods=['POST'])
def connect_database():
    try:
        data = request.json
        print(f"收到連接請求: {data}")  # 添加調(diào)試信息
        
        # 先創(chuàng)建一個沒有指定數(shù)據(jù)庫的連接
        config = DatabaseConfig(
            host=data.get('host'),
            user=data.get('user'),
            password=data.get('password'),
            database='',  # 先不指定數(shù)據(jù)庫
            port=int(data.get('port', 3306))
        )
        
        success, error_message = db_manager.connect(config)
        if success:
            # 獲取數(shù)據(jù)庫列表
            databases = db_manager.get_databases()
            print(f"成功獲取數(shù)據(jù)庫列表: {databases}")  # 添加調(diào)試信息
            return jsonify({
                'success': True,
                'databases': databases
            })
        print(f"連接失敗: {error_message}")  # 添加調(diào)試信息
        return jsonify({
            'success': False,
            'message': error_message
        })
    except Exception as e:
        error_message = f"發(fā)生錯誤: {str(e)}"
        print(error_message)  # 添加調(diào)試信息
        import traceback
        print(traceback.format_exc())  # 打印完整的錯誤堆棧
        return jsonify({
            'success': False,
            'message': error_message
        })
 
@main.route('/select-database', methods=['POST'])
def select_database():
    try:
        data = request.json
        database = data.get('database')
        if not database:
            return jsonify({
                'success': False,
                'message': '請選擇數(shù)據(jù)庫'
            })
            
        print(f"切換到數(shù)據(jù)庫: {database}")
        
        # 使用選擇的數(shù)據(jù)庫重新連接
        config = DatabaseConfig(
            host=db_manager.host,
            user=db_manager.user,
            password=db_manager.password,
            database=database,
            port=db_manager.port
        )
        
        success, error_message = db_manager.connect(config)
        if success:
            print(f"成功切換到數(shù)據(jù)庫: {database}")
            return jsonify({
                'success': True,
                'message': f'成功切換到數(shù)據(jù)庫: {database}'
            })
        else:
            print(f"切換數(shù)據(jù)庫失敗: {error_message}")
            return jsonify({
                'success': False,
                'message': f'切換數(shù)據(jù)庫失敗: {error_message}'
            })
            
    except Exception as e:
        error_message = f"選擇數(shù)據(jù)庫時發(fā)生錯誤: {str(e)}"
        print(error_message)
        import traceback
        print(traceback.format_exc())
        return jsonify({
            'success': False,
            'message': error_message
        })
 
@main.route('/generate-sql', methods=['POST'])
def generate_sql():
    try:
        user_input = request.json.get('input')
        model_type = request.json.get('model')  # 默認值
        print(f"收到SQL生成請求,用戶輸入: {user_input},選擇模型: {model_type}")
 
        if model_type == '':
            # 使用本地 SQL 生成器
            generated_sql = SQLGenerator.generate_sql(user_input)
            return jsonify({
                'success': True,
                'sql': generated_sql
            })
        else:
            # 使用其他模型的現(xiàn)有邏輯
            model_config = current_app.config['AVAILABLE_MODELS'].get(model_type)
            if not model_config:
                return jsonify({
                    'success': False,
                    'message': '不支持的模型類型'
                })
            
            # 通用提示詞
            prompt = f"""
            作為一個SQL專家,請根據(jù)以下需求生成合適的SQL語句:
            需求:{user_input}
            
            請只返回SQL語句,不需要其他解釋。
            如果是創(chuàng)建表,請包含合適的字段類型和必要的約束。
            """
 
            try:
                headers = {
                    'Authorization': f'Bearer {model_config["api_key"]}',
                    'Content-Type': 'application/json'
                }
 
                if model_type == 'deepseek':
                    payload = {
                        'model': model_config['model_name'],
                        'messages': [
                            {'role': 'user', 'content': prompt}
                        ],
                        'temperature': 0.3
                    }
                else:  # OpenAI
                    payload = {
                        'model': model_config['model_name'],
                        'messages': [
                            {'role': 'system', 'content': 'You are a SQL expert. Only return SQL statements without any explanation.'},
                            {'role': 'user', 'content': prompt}
                        ],
                        'temperature': 0.3
                    }
 
                response = requests.post(
                    model_config['api_url'],
                    headers=headers,
                    json=payload,
                    timeout=30
                )
 
                if response.status_code == 200:
                    if model_type == 'deepseek':
                        generated_sql = response.json()['choices'][0]['message']['content'].strip()
                    else:  # OpenAI
                        generated_sql = response.json()['choices'][0]['message']['content'].strip()
                    
                    print(f"生成的SQL: {generated_sql}")
                    return jsonify({'success': True, 'sql': generated_sql})
                else:
                    error_message = f"API調(diào)用失敗: {response.status_code} - {response.text}"
                    print(error_message)
                    return jsonify({
                        'success': False,
                        'message': error_message
                    })
 
            except requests.exceptions.RequestException as e:
                error_message = f"API請求錯誤: {str(e)}"
                print(error_message)
                return jsonify({
                    'success': False,
                    'message': error_message
                })
 
    except Exception as e:
        error_message = f"SQL生成錯誤: {str(e)}"
        print(error_message)
        import traceback
        print(traceback.format_exc())
        return jsonify({
            'success': False,
            'message': error_message
        })
 
@main.route('/execute-sql', methods=['POST'])
def execute_sql():
    try:
        sql = request.json.get('sql')
        if not sql or sql.strip().startswith('--'):
            return jsonify({
                'success': False,
                'result': None,
                'message': '請先生成有效的 SQL 語句'
            })
 
        print(f"執(zhí)行SQL: {sql}")
        result, error_message = db_manager.execute_query(sql)
        
        if result is None:
            return jsonify({
                'success': False,
                'result': None,
                'message': error_message or '執(zhí)行失敗,請確保已連接數(shù)據(jù)庫并檢查 SQL 語句是否正確'
            })
            
        print(f"執(zhí)行結(jié)果: {result}")
        return jsonify({
            'success': True,
            'result': result
        })
        
    except Exception as e:
        error_message = f"SQL執(zhí)行錯誤: {str(e)}"
        print(error_message)
        import traceback
        print(traceback.format_exc())
        return jsonify({
            'success': False,
            'result': None,
            'message': error_message
        })
 
@main.route('/get-databases', methods=['GET'])
def get_databases():
    databases = db_manager.get_databases()
    return jsonify({'databases': databases})
 
@main.route('/test-connection', methods=['POST'])
def test_connection():
    try:
        data = request.json
        print(f"收到測試連接請求: {data}")
        
        # 創(chuàng)建一個沒有指定數(shù)據(jù)庫的連接配置
        config = DatabaseConfig(
            host=data.get('host'),
            user=data.get('user'),
            password=data.get('password'),
            database='',  # 不指定數(shù)據(jù)庫
            port=int(data.get('port', 3306))
        )
        
        success, error_message = db_manager.connect(config)
        if success:
            # 獲取數(shù)據(jù)庫列表
            databases = db_manager.get_databases()
            print(f"測試連接成功,獲取到數(shù)據(jù)庫列表: {databases}")
            return jsonify({
                'success': True,
                'databases': databases
            })
        print(f"測試連接失敗: {error_message}")
        return jsonify({
            'success': False,
            'message': error_message
        })
    except Exception as e:
        error_message = f"測試連接時發(fā)生錯誤: {str(e)}"
        print(error_message)
        import traceback
        print(traceback.format_exc())
        return jsonify({
            'success': False,
            'message': error_message
        }) 

到此這篇關(guān)于Python調(diào)用DeepSeek API實現(xiàn)對本地數(shù)據(jù)庫的AI管理的文章就介紹到這了,更多相關(guān)Python DeepSeek數(shù)據(jù)庫管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 8個python新手入門項目

    8個python新手入門項目

    文將介紹8個帶有代碼的Python項目,這些項目將幫助大家增強編程能力,這些項目涵蓋了各種主題和難度級別,助力大家成長為一個Python開發(fā)者
    2024-01-01
  • Python?Playwright進行常見的頁面交互操作

    Python?Playwright進行常見的頁面交互操作

    在使用?Playwright?進行?Web?自動化時,頁面交互是核心操作之一,本文將詳細介紹如何使用?Playwright?進行常見的頁面交互操作,希望對大家有所幫助
    2024-10-10
  • Python實現(xiàn)ATM系統(tǒng)

    Python實現(xiàn)ATM系統(tǒng)

    這篇文章主要為大家詳細介紹了Python實現(xiàn)ATM系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 使用Cython中prange函數(shù)實現(xiàn)for循環(huán)的并行

    使用Cython中prange函數(shù)實現(xiàn)for循環(huán)的并行

    Cython中提供了一個prange函數(shù),專門用于循環(huán)的并行執(zhí)行。這個 prange的特殊功能是Cython獨一無二的,并且prange只能與for循環(huán)搭配使用,不能獨立存在。本文就將使用 prange 實現(xiàn) for 循環(huán)的并行,感興趣的可以了解一下
    2022-08-08
  • python清除指定目錄內(nèi)所有文件中script的方法

    python清除指定目錄內(nèi)所有文件中script的方法

    這篇文章主要介紹了python清除指定目錄內(nèi)所有文件中script的方法,涉及Python針對文件、字符串及正則匹配操作的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • Python編程深度學(xué)習(xí)繪圖庫之matplotlib

    Python編程深度學(xué)習(xí)繪圖庫之matplotlib

    今天小編就為大家分享一篇關(guān)于Python編程深度學(xué)習(xí)繪圖庫之matplotlib,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Python腳本實現(xiàn)快速整理圖片文件

    Python腳本實現(xiàn)快速整理圖片文件

    這篇文章主要為大家詳細介紹了Python如何通過三個腳本實現(xiàn)快速整理圖片文件,適用于日常數(shù)據(jù)整理與批量處理場景,感興趣的小伙伴可以了解下
    2025-12-12
  • python創(chuàng)建進程fork用法

    python創(chuàng)建進程fork用法

    這篇文章主要介紹了python創(chuàng)建進程fork用法,實例分析了Python使用fork創(chuàng)建進程的使用方法,需要的朋友可以參考下
    2015-06-06
  • python shell命令行中import多層目錄下的模塊操作

    python shell命令行中import多層目錄下的模塊操作

    這篇文章主要介紹了python shell命令行中import多層目錄下的模塊操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python實現(xiàn)單個或批量文件移動的示例代碼

    Python實現(xiàn)單個或批量文件移動的示例代碼

    日常辦公和數(shù)據(jù)處理中,我們經(jīng)常需要將文件從一個目錄移動到另一個指定目錄,本文就來介紹一下Python實現(xiàn)單個或批量文件移動,具有一定的參考價值,感興趣的可以了解一下
    2025-12-12

最新評論

昂仁县| 鄂伦春自治旗| 青浦区| 东台市| 华阴市| 安阳县| 文登市| 仁怀市| 新安县| 多伦县| 酒泉市| 通海县| 安庆市| 乌兰浩特市| 宁德市| 句容市| 鸡泽县| 石林| 蒙自县| 阿拉尔市| 广南县| 灵寿县| 昌图县| 女性| 沾益县| 吉林省| 南华县| 富民县| 汉川市| 融水| 马鞍山市| 云安县| 环江| 银川市| 林甸县| 灵璧县| 辽宁省| 友谊县| SHOW| 平山县| 璧山县|