当相同的命令在命令行上运行时,使用Python脚本导入MySQL数据库会失败,这会给出什么?

时间:2016-03-10 09:28:45

标签: python mysql docker

我在docker容器中运行MySQL服务器,并尝试在Python脚本(Flask应用程序)中导入.sql文件。这是我的代码:

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,它会产生同样的错误。

2 个答案:

答案 0 :(得分:0)

您的MySQL请求格式不正确,您确定它在命令行上有效吗?

你应该尝试:

os.system("docker exec -i {0}_db_1 mysql -u {1} -p {2} {3}".format(db_file, username, password, db_name))

答案 1 :(得分:0)

我正在使用NamedTemporaryFile,结果发现该文件在我尝试使用时没有写入磁盘。如果我在os.system之前调用db_file.flush(),一切正常。