feat(test): action 'exec' — INSERT/UPDATE/DDL через db.execute()
/test sql → db.query() → fetchall() → ломается на CREATE TABLE /test exec → db.execute() → commit без fetch → для DDL/INSERT/UPDATE
This commit is contained in:
+13
-1
@@ -38,7 +38,8 @@ def test():
|
|||||||
"POST /test status — статус БД (JSON)",
|
"POST /test status — статус БД (JSON)",
|
||||||
"POST /test createdb — создать БД (если нет)",
|
"POST /test createdb — создать БД (если нет)",
|
||||||
"POST /test tables — список таблиц",
|
"POST /test tables — список таблиц",
|
||||||
"POST /test sql {...} — выполнить SQL",
|
"POST /test exec {...} — INSERT/UPDATE/DDL (без fetch)",
|
||||||
|
"POST /test sql {...} — SELECT (с fetch)",
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -78,6 +79,17 @@ def test():
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
return jsonify({"error": str(e)}), 500
|
return jsonify({"error": str(e)}), 500
|
||||||
|
|
||||||
|
if action == "exec":
|
||||||
|
# Выполнить INSERT/UPDATE/DELETE/DDL через db.execute()
|
||||||
|
# (не делает fetch, поэтому подходит для CREATE TABLE и т.д.)
|
||||||
|
sql_text = data.get("sql", "")
|
||||||
|
if not sql_text:
|
||||||
|
return jsonify({"error": "no sql"}), 400
|
||||||
|
rowcount, err = db.execute(sql_text)
|
||||||
|
if err:
|
||||||
|
return jsonify({"error": err}), 500
|
||||||
|
return jsonify({"rowcount": rowcount})
|
||||||
|
|
||||||
if action == "sql":
|
if action == "sql":
|
||||||
sql_text = data.get("sql", "")
|
sql_text = data.get("sql", "")
|
||||||
if not sql_text:
|
if not sql_text:
|
||||||
|
|||||||
Reference in New Issue
Block a user