Форум сайта python.su
для записи в локальную базу MySQL использую из пакета subprocess
from subprocess import Popen, PIPE
...
sql = sql.replace('"', '\""').replace("'", "\''")
Popen("mysql test -e \"%s\"" % (sql), shell=False, stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate()
Отредактировано (Март 25, 2011 10:50:55)
Офлайн
Пример неправильный. Я вижу лишь
Popen('mysql test -e “%s”' % (sql), shell=False, stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate()
Офлайн
Popen(, stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate()
Офлайн
Держите вдогонку: http://asvetlov.blogspot.com/2011/03/subprocess.html
Офлайн
Андрей СветловСпасибо, Андрей, за поправку в вызове!
Popen(, stdin=PIPE, stdout=PIPE, stderr=PIPE).communicate()
sql = sql.replace('"', '\""').replace("'", "\''")
Офлайн
Операционная система какая? Windows или таки Linux?
Офлайн
Андрей СветловWindows
Операционная система какая? Windows или таки Linux?
Офлайн
Тогда - просто.
Вы экранировали кавычками ваш вызов mysql. Это - прокатило.
Если желаете знать “почему” - да потому что mysql “скушал” ваш запрос - он линуксовый по природе и его правила подошли, а windows их тоже пропустил.
И тем не менее используйте список для этих целей.
Подробности найдете в list2cmdline для модуля subprocess.
Офлайн