python - 从 Python 运行 SQL 文件

标签 python mysql sql mariadb popen

我必须启动一个 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/

相关文章:

c# - 如何在 C# 中检查 datarow 行中是否为 null

python - 我什么时候应该在笔记本中模块化代码

php - 将 TINYINT(1) 转换为字符串

python - Python-如何正确终止threading.Timer类?

php - 使用带有 Angular JS 的 mySQL 数据库的用户登录系统?

php - 无法过滤过去 30 天的推荐

sql - 子事务处于事件状态时无法回滚 - 错误 2D000

MySQL获取具有时间间隔的行

python - 雪花连接器 SQL 编译错误 : maximum number of expressions in a list exceeded, 预计最多 16,384

python - 如何在不使用 for 循环的情况下在多对多字段上应用过滤器