从 Python 运行 SQL 文件
Posted
技术标签:
【中文标题】从 Python 运行 SQL 文件【英文标题】:Running SQL file from Python 【发布时间】:2017-10-07 11:27:33 【问题描述】:我必须启动一个 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()
但我收到此错误:
错误:必须是 str,而不是 _io.TextIOWrapper
我该怎么办?
【问题讨论】:
这个看起来像你想要的。 ***.com/a/4563950/1394353 注意源使用的是什么 - 文件名,而不是内容。所以不要打开文件 【参考方案1】:您需要传递文件的内容,而不是文件对象。
proc.communicate('source ' + fileInput.read())
另外,请不要捕获异常只是为了打印它们并退出。这就是 Python 已经做的事情。省去那个 try/except。
【讨论】:
【参考方案2】:好的,我将 mysql 指令移到了一个 bat 中。
from subprocess import Popen
class ImportSql:
def execImport(self):
p = Popen("import.bat")
p.communicate()
没关系! 谢谢!
【讨论】:
以上是关于从 Python 运行 SQL 文件的主要内容,如果未能解决你的问题,请参考以下文章
Google BigQuery 从 Python 脚本执行 SQL 文件