Skip to main content
Glama

Data Engineer Agent

by abbasnosrat
db.py3.48 kB
import datetime import os import mysql.connector from mysql.connector import Error from dotenv import load_dotenv def execute_mysql_query(query): connection = None cursor = None try: # Establish a database connection connection = mysql.connector.connect( host=os.getenv('DB_HOST'), database=os.getenv('DB_NAME'), user=os.getenv('DB_USER'), password=os.getenv('DB_PASSWORD'), port=os.getenv('DB_PORT', 3306) ) if connection.is_connected(): cursor = connection.cursor() cursor.execute(query) # For SELECT queries, fetch the results if query.strip().upper().startswith('SELECT'): result = cursor.fetchall() return result, cursor.description else: # For INSERT, UPDATE, DELETE, commit the transaction connection.commit() return cursor.rowcount, None except Error as e: print(f"Error while connecting to MySQL: {e}") return None, None finally: # Close cursor and connection in any case if cursor is not None: cursor.close() if connection is not None and connection.is_connected(): connection.close() def format_results_for_llm(query, results, description, rowcount=None): query_type = query.strip().upper().split()[0] response = { "query": query, "type": query_type, "timestamp": datetime.datetime.now().isoformat(), "status": "success" } if query_type == "SELECT": if not results: response["message"] = "Query executed successfully but returned no results" response["results"] = [] return response # Get column names (assuming cursor.description is available) try: # If results came from mysql.connector cursor columns = [desc[0] for desc in description] except AttributeError: # Fallback if we can't get column names columns = [f"column_{i}" for i in range(len(results[0]))] # Format results as a list of dictionaries formatted_results = [] for row in results: formatted_results.append(dict(zip(columns, row))) response.update({ "results": formatted_results, "count": len(results), "format": "Each result is a dictionary with column names as keys" }) elif query_type in ("INSERT", "UPDATE", "DELETE"): response.update({ "rows_affected": rowcount, "message": f"{query_type} operation completed successfully" }) else: # For other query types (CREATE, ALTER, etc.) response.update({ "message": f"{query_type} operation executed successfully", "note": "No results to return for this query type" }) return response if __name__ == "__main__": load_dotenv() query = """INSERT INTO cars (brand, model, color, `condition`, mileage, price, owner_email) VALUES ('Toyota', 'Corola', 'Silver', 'used', 45000, 18500.00, 'john.dee@example.com'),""" results, description = execute_mysql_query(query) print(format_results_for_llm(query,results, description))

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/abbasnosrat/MCPServerAgent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server