数据库flask访问

执行节点

python 复制代码
import urllib.request
import json

def main(sql: str) -> dict:
    api_url = "http://192.168.0.108:35003/execute_query"
    headers = {"Content-Type": "application/json"}
    data = json.dumps({"sql": sql}).encode("utf-8")

    try:
        req = urllib.request.Request(api_url, data=data, headers=headers, method="POST")
        with urllib.request.urlopen(req) as response:
            res_data = json.loads(response.read().decode("utf-8"))
        
        # 转成 JSON 字符串返回
        return {"result": json.dumps(res_data)}
    except Exception as e:
        # 异常信息也返回字符串
        return {"result": f"请求接口失败: {str(e)}"}

app.py

运行方法:

yum install -y python3

pip3 install flask pymysql

python3 app.py

firewall-cmd --add-port=35003/tcp --permanent

firewall-cmd --reload

python 复制代码
from flask import Flask, request, jsonify
import pymysql

app = Flask(__name__)

@app.route("/execute_query", methods=['GET', 'POST'])
def execute_query():
    data = request.get_json()
    sql = data.get("sql", "").strip()

    if not sql:
        return jsonify({"error": "SQL语句不能为空"}), 400
    if not sql.lower().startswith("select"):
        return jsonify({"error": "只允许执行SELECT语句"}), 400

    try:
        # 建立数据库连接
        conn = pymysql.connect(
            host="192.168.0.108",  # 你的数据库IP
            user="root",
            password="123456",
            database="mydb",
            cursorclass=pymysql.cursors.DictCursor
        )

        with conn.cursor() as cursor:
            cursor.execute(sql)
            result = cursor.fetchall()
        conn.close()

        return jsonify(result)

    except pymysql.Error as e:
        return jsonify({"error": f"数据库错误: {str(e)}"}), 500
    except Exception as e:
        return jsonify({"error": f"未知错误: {str(e)}"}), 500


if __name__ == "__main__":
    app.run(host="0.0.0.0", port=35003)
相关推荐
2301_8184190120 分钟前
Python内存管理机制:垃圾回收与引用计数
jvm·数据库·python
2401_8916558121 分钟前
开源项目吐槽大会技术文章大纲
数据库·云原生
jessecyj23 分钟前
maven导入spring框架
数据库·spring·maven
qq_4176950524 分钟前
构建一个桌面版的天气预报应用
jvm·数据库·python
cm65432025 分钟前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
闭关苦炼内功27 分钟前
Win10 安装 MySQL5.7.36 数据库记录
数据库·windows·mysql
栀椩28 分钟前
MySQL数据库自动备份方法
数据库·mysql
2301_8166512230 分钟前
如何从Python初学者进阶为专家?
jvm·数据库·python
Aaron_Wjf32 分钟前
PostgreSQL大对象操作办法
数据库·postgresql
fundroid36 分钟前
Room 3.0 完全解析:一次面向未来的现代化重构
android·数据库·database·kmp