我必须启动一个 python sql 文件。 该文件适用于 mysql。 我这样试过:
from subprocess import Popen, PIPE
import sys
class ImportSql:
def execImport(self, fileSql):
try:
with open(fileSql, 'r') as fileInput:
proc = Popen(["mysql", "DB_NAME", "-u", "USER", "-pPASSWORD"], stdin=PIPE, stdout=PIPE)
proc.communicate('source ' + fileInput)[0]
except BaseException as ex:
print("ERROR:", ex)
sys.exit()
但是我得到这个错误:
ERROR: must be str, not _io.TextIOWrapper
我该怎么办?
最佳答案
您需要传递文件的内容,而不是文件对象。
proc.communicate('source ' + fileInput.read())
此外,请不要捕获异常只是为了打印它们并退出。这就是 Python 已经做的事情。省略那个 try/except。
关于python - 从 Python 运行 SQL 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43864950/