| 71 | |
| 72 | |
| 73 | class DatabaseManager: |
| 74 | def __init__(self, db_urls): |
| 75 | self.engines = {db_name: create_engine(url) for db_name, url in db_urls.items()} |
| 76 | self.inspector = inspect(self.engines[next(iter(self.engines))]) # Use the first engine to inspect tables |
| 77 | |
| 78 | def get_table_list(self, db_name): |
| 79 | self.inspector.bind = self.engines[db_name] |
| 80 | return self.inspector.get_table_names() |
| 81 | |
| 82 | def get_column_list(self, db_name, table_name): |
| 83 | self.inspector.bind = self.engines[db_name] |
| 84 | columns = self.inspector.get_columns(table_name) |
| 85 | return [column['name'] for column in columns] |
| 86 | |
| 87 | def execute_query(self, db_name, query): |
| 88 | engine = self.engines[db_name] |
| 89 | with engine.connect() as connection: |
| 90 | result = connection.execute(query) |
| 91 | return result.fetchall() |
| 92 | |
| 93 | |
| 94 | if __name__ == "__main__": |