Потоковый вывод команды BCP - PullRequest
0 голосов
/ 21 октября 2019

Когда я пытаюсь передать команду BCP из ms SQL в python, строки печатаются только после завершения команды.

Однако, когда вы запустите команду в своем терминале, вы увидите, что процесс там идет. Есть ли способ для Python получать выходные данные BCP в режиме реального времени?

Ниже приведен код, который я пробовал:

bcp_command = ['bcp', target_table, 'in', file_path, '-t', delimiter, '-q', '-c', '-S', settings['server'], '-d', settings['database'], '-U', settings['uid'], '-P', settings['pwd']]

with subprocess.Popen(bcp_command, stdout=subprocess.PIPE, universal_newlines=True) as p:
    for line in p.stdout.readlines():
        print(line)

    if p.returncode:
        raise subprocess.CalledProcessError(p.returncode, bcp_command)

Ожидаемый: поток вывода команды BCP в реальном времени.

Фактически: весь вывод дан всемсразу после завершения команды.

...