docker-osm/flask_app/utils/database.py

55 wiersze
1.5 KiB
Python
Czysty Zwykły widok Historia

2023-10-27 20:48:47 +00:00
import psycopg2
2023-10-27 12:31:16 +00:00
class Database:
2023-10-27 20:48:47 +00:00
def __init__(self, database, user, password, host, port):
self.conn = psycopg2.connect(
database=database,
user=user,
password=password,
host=host,
port=port
)
self.cur = self.conn.cursor()
2023-10-27 12:31:16 +00:00
def get_table_names(self):
table_names = []
2023-10-27 20:48:47 +00:00
query = """
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'osm';
"""
2023-10-27 12:31:16 +00:00
tables = self.execute(query)
for table in tables:
table_names.append(table[0])
return table_names
def get_column_names(self, table_name):
column_names = []
2023-10-27 20:48:47 +00:00
query = f"""
SELECT column_name
FROM information_schema.columns
WHERE table_name = '{table_name}';
"""
2023-10-27 12:31:16 +00:00
columns = self.execute(query)
for column in columns:
2023-10-27 20:48:47 +00:00
column_names.append(column[0])
2023-10-27 12:31:16 +00:00
return column_names
def get_database_info(self):
database_info = []
for table_name in self.get_table_names():
column_names = self.get_column_names(table_name)
database_info.append({
"table_name": table_name,
"column_names": column_names
})
2023-10-27 12:31:16 +00:00
return database_info
def execute(self, query):
2023-10-27 20:48:47 +00:00
self.cur.execute(query)
return self.cur.fetchall()
2023-10-27 12:31:16 +00:00
def close(self):
2023-10-27 20:48:47 +00:00
self.cur.close()
self.conn.close()