를 예상대로 내가, 간단한 스크립트를 파이썬 파이썬 스크립트가 오류없이 실행subprocess.call는
subprocess.call([
'sqlcmd',
'-S', 'server_name',
'-d', 'db name'
'-i', r'path to the script + script name'
])
에서 SQL 스크립트를 호출하는 실행되지하지만, SQL 스크립트를 호출하지 않습니다. 명령 줄 sqlcmd "path to the script + script name"
통해 SQL 스크립트를 실행할 수 있으며 예상대로 작동합니다.
나는 아무 문제로 subprocess
모듈을 사용하여 저장 프로 시저를 호출
subprocess.Popen([
'sqlcmd',
'-S', 'server_name',
'-d', 'db name'
'-Q', 'exec stored procedure'
])
하지만 별도의 스크립트를 호출하면 어떤 결과를 얻을 수 있습니다. shell = True
을 포함하여 시도했거나 Popen
을 사용했지만 아무 것도 변경되지 않았습니다.
더 많은 테스트를 수행하기 위해 현재 데이터베이스의 이름 만 반환하는 테스트 스크립트를 만들었습니다. 명령 줄에서 아무런 문제가없이 sqlcmd -S server_name -d db_name -i "directory/test1.sql"
으로 실행하여 예상 결과를 얻었습니다. subprocess
모듈을 실행하려고 시도하고 다시 내 문제가 발생했습니다. subprocess.call_check
을 시도했으며 exit status 1
이라는 오류가 발생했습니다. 따라서 스크립트는 명령 행으로 실행되지만, subprocess
모듈로는 실행되지 않습니다.
어떤 일이 * 발생합니까? 오류가 있습니까? 아니면 단순히 아무것도하지 않습니까? '-i'에 전달할 인수가 정확한지 확신합니까? 확인해 봤어? – larsks
subprocess.call 전후에'print' 문을 넣으면 두 문이 모두 출력되고 오류는 발생하지 않습니다. '-i'의 인수는 올바른 것입니다. 왜냐하면 명령 행'sqlcmd '에서 스크립트 + 스크립트 이름'을 통해 똑같은 인수를 실행할 때 스크립트가 실행되기 때문입니다. '-i'의 인수가 올바르지 않으면 에러가 발생합니다. – AK9309