Arhn - архитектура программирования

Импорт базы данных MySQL с помощью скрипта Python не работает, когда та же команда работает в командной строке, что дает?

Я запускаю сервер MySQL в контейнере докеров и пытаюсь импортировать файл .sql в скрипт Python (приложение Flask). Это мой код:

os.system("docker exec -i %s_db_1 mysql -u<username> -p<password> <db name> < %s" % (name, db_file))

Он возвращает эту ошибку в терминале, в котором запущено приложение Flask:

ERROR 1064 (42000) at line 1835: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Если я запускаю эту команду из командной строки, она работает. Я не могу понять, как использование os.system в этом случае существенно отличается. Я также пробовал subprocess.call, и он выдает ту же ошибку.

10.03.2016

Ответы:


1

Ваш запрос MySQL неправильно отформатирован, вы уверены, что он работает в командной строке?

Тебе стоит попробовать:

os.system("docker exec -i {0}_db_1 mysql -u {1} -p {2} {3}".format(db_file, username, password, db_name))
10.03.2016
  • ‹Имя пользователя›, ‹пароль› и ‹имя базы данных› были просто заполнителями, из которых я удалил то, что на самом деле выводилось. Единственные фактические заполнители python — это имя контейнера и имя файла, содержащего дамп sql. Если я скопирую и вставлю свое выражение в командную строку и введу соответствующие значения, оно сработает. Кроме того, ваше исправление не включает фактический импорт файла. Мое единственное предположение состоит в том, что os.system не обрабатывает ‹ так же, как это делает командная строка, но ошибка не согласуется с этим предположением. 11.03.2016

  • 2

    Я использую NamedTemporaryFile, и оказалось, что запись файла на диск не была завершена, когда я пытался его использовать. Если я вызову db_file.flush() прямо перед os.system, все будет работать.

    11.03.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..