You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
import psycopg2
|
|
from psycopg2 import sql
|
|
import json
|
|
|
|
# Параметры подключения
|
|
DB_CONFIG = {
|
|
'host': '192.168.1.100',
|
|
'port': 5432, # стандартный порт PostgreSQL
|
|
'database': 'game_shop', # замените на имя вашей БД
|
|
'user': 'casaos', # замените на ваше имя пользователя
|
|
'password': 'casaos' # замените на ваш пароль
|
|
}
|
|
|
|
def fetch_table_as_json(cursor, table_name) -> list[dict]:
|
|
cursor.execute(sql.SQL("SELECT * FROM {}").format(sql.Identifier(table_name)))
|
|
columns = [desc[0] for desc in cursor.description] # Имена столбцов
|
|
rows = cursor.fetchall()
|
|
# Преобразуем каждую строку в словарь
|
|
result = [dict(zip(columns, row)) for row in rows]
|
|
return result
|
|
|
|
|
|
def fetch_row_as_json(cursor, table_name, row_id) -> dict | None:
|
|
query = sql.SQL("SELECT * FROM {} WHERE id = %s").format(
|
|
sql.Identifier(table_name)
|
|
)
|
|
cursor.execute(query, (row_id,))
|
|
|
|
columns = [desc[0] for desc in cursor.description] # Имена столбцов
|
|
row = cursor.fetchone() # Получаем одну строку
|
|
|
|
if row is None:
|
|
return None # или raise Exception, если нужно
|
|
|
|
return dict(zip(columns, row)) |