【发布时间】:2021-08-27 15:33:45
【问题描述】:
我正在尝试使用 mysqldump 进行一些测试,将数据从一个数据库转储到另一个数据库。 mysqldump 设置在 PATH 中,命令在 CMD 界面或通过 .cmd 完美运行。 它似乎在包装在一个简单的 try/except 块中的 python 中运行正常,但我在目标数据库中没有得到任何结果。
使用: MariaDB 10.1 & 10.5 / Python 3.9
该命令类似于:
mysqldump --no-create-info --no-create-db --user root -p****** --port=some_port -h 127.0.0.1 some_database some_table |
mysql --user root -p***** --port=some_port -h 127.0.0.1 target_table
我尝试的是 Popen 的不同变体(也尝试通过子进程处理管道,并拆分 args),但从 stackoverflow 其他地方给出的最简单的解决方案开始:
subprocess.Popen("mysqldump --no-create-info --no-create-db --user root -p****** --port=some_port -h 127.0.0.1 some_database some_table |
mysql --user root -p***** --port=some_port -h 127.0.0.1 target_table", shell=True)
我还制作了一个 .cmd 文件并在 Windows 中运行它,它工作正常。将它传递给 python 中的 Popen() 或 os.system() 会出现同样的问题,似乎在 try/except 中签出,但在目标数据库中没有看到结果。
可能是什么问题,我该如何解决?
【问题讨论】: