Django вставка из данных из другой таблицы с помощью sql

Я не очень хорошо знаком с sql, который выполняется в django. Моя база данных PostgreSQL, сейчас я хочу вставить выбранные данные из одной таблицы в другую в той же базе данных на основе даты создания.

Но я получил эту ошибку: IndexError: string index out of range

Пожалуйста, помогите мне сэкономить мое время. Спасибо

Вот мой код:

def insert():
    now = datetime.today() - timedelta(days=1)
    now = str(now)
    created = datetime.strptime(date_now[:-7],'%Y-%m-%d %H:%M:%S')
    created= created.strftime('%Y-%m-%d')
    with connections['database_2'].cursor() as cursor:
        cursor.execute('''INSERT INTO Item
                   .......some sql condition here.....

                         AND date_created::date = %s ''', (''.join(created)))
       row = cursor.fetchone()
   return row

Проблема вот в чем AND date_created::date = %s ''', (''.join(created))), я не знаю правильного способа вызова переменной внутри sql. Если я изменю вот так AND date_created::date = %s ''', (created)выбросит другую ошибку TypeError: argument 1 must be a string or unicode object: got tuple instead.

Формат date_created из таблицы, откуда я беру данные, такой 2022-08-15 00:00:00.000 +0700.

Мне нравится использовать f-strings для строковых запросов SQL, обернутых в python:

def insert():
    now = datetime.today() - timedelta(days=1)
    now = str(now)
    created = datetime.strptime(date_now[:-7],'%Y-%m-%d %H:%M:%S')
    created = created.strftime('%Y-%m-%d')
    print(f'{created}')
    with connections['database_2'].cursor() as cursor:
        cursor.execute(f'''INSERT INTO Item
                   .......some sql condition here.....

                         AND date_created::date = %s {created}''', 
       row = cursor.fetchone()
   return row

Надеюсь, это поможет.

Вернуться на верх