2017-05-09 9 views
3

파이썬 SQL 파일을 실행해야합니다. 이 파일은 mysql 용이다. 나는 이런 식으로 시도 :Python에서 SQL 파일 실행

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

내가 어떻게 할 수 있습니까?

+0

이것은 당신이 원하는 것처럼 보입니다. http://stackoverflow.com/a/4563950/1394353 소스가 사용하는 내용 (파일 이름이 아닌 내용)을 기록하십시오. 그래서 파일을 열지 마라. –

답변

2

파일 개체가 아니라 파일의 내용을 전달해야합니다.

proc.communicate('source ' + fileInput.read()) 

또한 예외를 잡아 인쇄하지 말고 종료하십시오. 이것이 파이썬이 이미하는 일입니다. try/except를 남겨 둡니다.

0

좋아, 나는 박쥐 안에 mysql 지침을 옮겼다.

from subprocess import Popen 


class ImportSql: 
    def execImport(self): 
     p = Popen("import.bat") 
     p.communicate() 

괜찮습니다! 덕분에 !