Initial commit: RIPS Manager web system
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import fdb
|
||||
from typing import Optional
|
||||
|
||||
|
||||
class FirebirdService:
|
||||
def __init__(self):
|
||||
self.conn = None
|
||||
|
||||
def connect(self, host: str, port: int, database: str, user: str, password: str):
|
||||
try:
|
||||
self.conn = fdb.connect(
|
||||
host=host,
|
||||
port=port,
|
||||
database=database,
|
||||
user=user,
|
||||
password=password,
|
||||
charset="UTF8",
|
||||
)
|
||||
return True, "Conexión exitosa"
|
||||
except Exception as e:
|
||||
return False, str(e)
|
||||
|
||||
def disconnect(self):
|
||||
if self.conn:
|
||||
self.conn.close()
|
||||
self.conn = None
|
||||
|
||||
def is_connected(self) -> bool:
|
||||
return self.conn is not None
|
||||
|
||||
def test_connection(self) -> tuple:
|
||||
if not self.conn:
|
||||
return False, "No hay conexión activa"
|
||||
try:
|
||||
cur = self.conn.cursor()
|
||||
cur.execute("SELECT 1 FROM RDB$DATABASE")
|
||||
cur.fetchone()
|
||||
return True, "Conexión OK"
|
||||
except Exception as e:
|
||||
return False, str(e)
|
||||
|
||||
def execute_query(self, query: str, params: Optional[dict] = None) -> tuple:
|
||||
if not self.conn:
|
||||
return False, "No hay conexión activa", []
|
||||
try:
|
||||
cur = self.conn.cursor()
|
||||
if params:
|
||||
cur.execute(query, params)
|
||||
else:
|
||||
cur.execute(query)
|
||||
columns = [desc[0] for desc in cur.description] if cur.description else []
|
||||
rows = cur.fetchall()
|
||||
return True, "", [dict(zip(columns, row)) for row in rows]
|
||||
except Exception as e:
|
||||
return False, str(e), []
|
||||
Reference in New Issue
Block a user