cmdline = ['mysql -u"username" -p"password" < query.sql']
Это не способ использовать Popen
.Программа должна быть первым элементом списка, и каждый передаваемый аргумент также должен быть элементом списка.Так что скорее должно быть cmdline = ["mysql", "-u", username, "-p", password]
.Кроме того, это не оболочка, поэтому вы не можете просто использовать «stdin = PIPE, а затем передайте SQL-запрос, например p.communicate(sqlQuery)
.
retcode = p.wait()
. Вы уже ждали, когда процесс завершит использование .communicate()
, поэтому вы должны получить доступ к возвращаемому значению с помощьюp.returncode
атрибут.