2015-02-23 2 views
0

Я хотел бы выполнить запрос MySQL source FileName.sql в сценарии Python в Linux.Как выполнить «source FileName.sql» в сценарии python?

Я могу выполнить другие запросы, такие как SELECT * FROM table_name, но этот вариант дает ошибку. Я выполняю это на сервере Linux с базой данных MySQL, используя Python. Интерфейс, который я использую, это Putty.

Питон скрипт я использовал это:

import MySQLdb 
db = MySQLdb.connect("hostname","username","pswrd","dbname") 
cursor = db.cursor() 
cursor.execute("source FileName.sql") 
db.close() 

Как я могу выполнить запрос source FileName.sql на том месте, где этот файл->FileName.sql находится?

+0

'source FileName.sql' не является допустимым оператором SQL. Поэтому я не удивлен, что он не работает. –

+0

Возможный дубликат файла [execute \ *. Sql с python MySQLdb] (http://stackoverflow.com/questions/4408714/execute-sql-file-with-python-mysqldb) – ozgur

+0

, но когда я выполняю этот оператор SQL за пределами скрипт python, затем его работа. –

ответ

1

source не является командой SQL. Это команда CLI MySQL, она существует только в консольном приложении mysql (и где бы то ни было реализовано). Все, что он делает, это прочитать содержимое FileName.sql и выпустить команды SQL внутри.

Чтобы сделать это в Python, вы можете использовать что-то вроде

Edit: Это предполагает, что вы имеете 1 запрос в каждой строке! Если у вас многострочные запросы, вам нужно будет найти средства для извлечения каждого запроса из файла.

import MySQLdb 
db = MySQLdb.connect("hostname","user","pass","db") 
cursor = db.cursor() 
for line in open("FileName.sql"): 
    cursor.execute(line) 
db.close() 
+0

спасибо, но его все еще не работает –

+0

его значение ниже ошибки: Файл «test6.py», строка 5, в cursor.execute (строка) Файл «/usr/lib/python2.7/dist-packages/MySQLdb/ cursors.py ", строка 174, в исполнении self.errorhandler (self, exc, value) Файл« /usr/lib/python2.7/dist-packages/MySQLdb/connections.py », строка 36, в defaulterrorhandler raise errorclass, errorvalue _mysql_exceptions.ProgrammingError: (1064, «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с«/* »в строке 1») root @ubuntu:/# –

+0

Я добавил комментарий в ответ, см. выше. Кроме того, если у вас есть внешние команды для инструмента командной строки 'mysql', это не сработает. –

Смежные вопросы