@maksutka777

Почему выдается ошибка sql во время импорта данных?

Привет! Пишу скрипт на python. Суть в том, чтобы при его запуске сначала создавался бэкап одной из таблиц базы данных, после того как бэкап сделан эта таблица должна быть очищена, а после этого должен произойти импорт данных в эту таблицу из файла *.cvs. В итоге бэкап делается успешно, очистка тоже успешно проходит, а вот импорт выдает такую ошибку: "Ошибка при подключении к базе данных: 1045 (28000): Access denied for user '[логин]'@'localhost' (using password: YES)"

Используются библиотеки:

import subprocess
import mysql.connector
from datetime import datetime
import os


Вот код отвечающий бэкап, очистку, импорт:

if connection.is_connected():
        print("Успешное подключение к базе данных")

        cursor = connection.cursor()

        subprocess.run(['mysqldump', '-h', host, '-u', user, '-p' + password, '--no-create-info', '--default-character-set=utf8', database, table_to_backup], stdout=open(backup_file, 'w'))  # ПРОХОДИТ УСПЕШНО

        print(f"Бэкап таблицы {table_to_backup} создан успешно и сохранен в файл {backup_file}")
        
        delete_query = f"DELETE FROM {table_to_backup}"
        cursor.execute(delete_query)  # ПРОХОДИТ УСПЕШНО
        connection.commit()

        print(f"Таблица {table_to_backup} очищена")

        load_data_query = f"LOAD DATA INFILE '{import_file}' INTO TABLE {table_to_backup} FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS"
        cursor.execute(load_data_query) # ОШИБКА
        connection.commit()

        print(f"Данные из файла {import_file} успешно импортированы в таблицу {table_to_backup}")


Где ошибка сидит?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
@maksutka777 Автор вопроса
Вопрос решился добавлением строки allow_local_infile=True

try:
    connection = mysql.connector.connect(
        host=host,
        user=user,
        password=password,
        database=database,
        allow_local_infile=True
    )
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rPman
Access denied for user
пользователю (в mysql это пара 'юзер%хост') не выданы права на вызов insert, 'обратитесь к вашему администратору базы данных', вполне возможно пользователь был верно настроен для создания резервной копии (требуется только чтение) а на модификации нет
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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