@IllIDan3

Почему прерывается транзакция SQL и игнорируются следующие команды?

Вот код;

# Импортируем библиотеки
import psycopg2 as pg
from main import *
from psycopg2 import Error

# Создаем бд и таблицу
try:
    # Подключиться к существующей базе данных
    connection = pg.connect(user="postgres",
                                  # пароль, который указали при установке PostgreSQL
                                  password= "тип пароль",
                                  host= "127.0.0.1",
                                  port= "5432",
                                  database= "тип дб")

    # Создайте курсор для выполнения операций с базой данных
    cursor = connection.cursor()
    # SQL-запрос для создания новой таблицы
    create_table_query = '''CREATE TABLE posts(
                          post_id INT PRIMARY KEY NOT NULL,
                          post_text TEXT    NOT NULL,
                          datetime TEXT NOT NULL); '''

    create_table_query_second = '''CREATE TABLE chats(
                          chat_id INT PRIMARY KEY  NOT NULL,
                          name    TEXT    NOT NULL); '''
    
    # Выполнение команды: это создает новую таблицу
    cursor.execute(create_table_query)
    cursor.execute(create_table_query_second)
    connection.commit()
    print("Таблица успешно создана в PostgreSQL")

except (Exception, Error) as error:
    print("Ошибка при работе с PostgreSQL", error)


# Функции
# Отправляем сообщение в чат (будет использоваться в цикле) 
async def send_message_in_chat(chat_id, post_text):
    bot.send_message(chat_id, text = post_text)

# Берем из бд все даты/время, находящиеся в библиотеке
async def import_datetime_into_database():
    datetime_list = cursor.execute("""SELECT datetime FROM posts""") # Передаем все даты\время в переменную
    return datetime_list.fetchall()  # возвращаем 

# Проверка всего DATABASE POSTS. Нужна для пользователя и удобна для креатора
async def check_posts_db(message_id):
    row = cursor.execute("""SELECT * FROM posts""") # Передаем все с Posts в переменную
    for i in row: # цикл for для последовательной отправки каждого сообщения
        bot.send_message(message_id, text = i)

# Функция получения айдишников чатов
async def give_chats_id_please():
    row = cursor.execute("""SELECT id FROM chats""") # передаем все айдишники чатов
    return row.fetchall() # возвращаем 

# Функция добавлениия айдишника чата
async def add_chat_id(state):
    async with state.proxy() as data:
        new_data = tuple(data.values())
        cursor.execute('''INSERT into chats(chat_id, name) VALUES (%s, %s)''', (new_data[0], new_data[1]))
        connection.commit()

Вылезает при вызове метода add_chat_id
  • Вопрос задан
  • 655 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы