我在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,它会产生同样的错误。
答案 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(),一切正常。