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
Надеюсь, это поможет.