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 createdb — создать БД (если нет)",
|
||||
"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:
|
||||
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":
|
||||
sql_text = data.get("sql", "")
|
||||
if not sql_text:
|
||||
|
||||
Reference in New Issue
Block a user