Я пробую этот запрос в alembi c код миграции
def get_my_table_id_list(connection):
duplicate_id_list = connection.execute(
"""
SELECT
a.id
FROM
my table AS a
WHERE
a.created_datetime > (
SELECT
MIN(b.created_datetime)
FROM
map_direction AS b
WHERE
< condition >)
LIMIT 1000
"""
).fetchall()
return duplicate_id_list
def delete_my_table(connection, id_list):
test = connection.execute(
f"""
DELETE FROM map_direction
WHERE my table.id IN ({", ".join(id_list)})
"""
)
print(test.rowcount)
def check_and_delete_duplicate_my_tablle(connection):
duplicate_id_list = get_duplicate_id_list(connection)
if len(duplicate_id_list) < 1:
return True
else:
duplicate_id_list = list(map(lambda _id: str(_id[0]), duplicate_id_list))
delete_my_table(connection, duplicate_id_list)
check_and_delete_duplicate_my_table(connection)
return False
, используя эти функции в моем коде миграции и запускаю flask db upgrade or alembic upgrade +1
моя база данных равна psql
, моя таблица все строки: 5 000 000 очень больших таблиц
Если моя строка БД меньше 100 000, эти функции работают для меня. Но мой стол очень и очень большой! эта функция не работает для меня.
Как я могу решить эту проблему?