Skip to content

Mock BEGIN, COMMIT, ROLLBACK

Была произведена попытка работать с пикодатой по PG протоколу через psychopg2, которая сразу же закончилась с ошибками парсинга BEGIN.

import psycopg2
import random
from datetime import datetime

# Параметры подключения к базе данных

conn_params = {
    "dbname": "",
    "user": "postgres",
    "password": "P@ssw0rd",
    "host": "192.168.11.23"
}


# Создание подключения
conn = psycopg2.connect(**conn_params)
cur = conn.cursor()

# SQL-запрос для вставки данных
insert_query = """
INSERT INTO card_balance (card_sk, master_account_contract_sk, eod_card_balance_amount_curr, eod_card_balance_amount_rub, eod_card_blocked_amount_curr, eod_card_blocked_amount_rub, currency_code_alpha, currency_code_num, src_system, abs_system, effective_from_dttm, effective_to_dttm, src_load_dttm, load_dttm, part_yyyy_mm_dd, src_table_name)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s);
"""

# Данные для вставки
data = (
    1,
    2,
    random.random() * 100000,
    random.random() * 100000,
    random.random() * 5000,
    random.random() * 5000,
    ''.join([chr(65 + random.randint(0, 25)) for _ in range(3)]),
    '{:03}'.format(random.randint(0, 999)),
    'system1' if random.random() > 0.5 else 'system2',
    'abs1' if random.random() > 0.5 else 'abs2',
    datetime.now(),
    datetime.now() ,
    datetime.now(),
    datetime.now(),
    datetime.now().strftime('%Y-%m-%d'),
    'tbl'
)

# Исполнение запроса
cur.execute(insert_query, data)

# Подтверждение изменений и закрытие соединения
conn.commit()
cur.close()
conn.close()

print("Строка успешно добавлена в таблицу.")