В pypyodbc, Как запросить таблицу для ее отдельных значений, обрезать старую таблицу и добавить отдельные значения в пустую таблицу - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть таблица, которая по какой-то причине имеет некоторые ошибки после запуска процесса. Каждая строка должна быть отдельным отчетом. Я пытаюсь сделать это с помощью взгляда на объект курсора после выполнения метода .fetchall, и это работает несколько. Но он вставляет только один ряд.

import pypyodbc

conn_str = ('Driver={SQL Server};Server=*****************;Trusted_Connection=yes;')

con = pypyodbc.connect(conn_str)
cur = con.cursor()
cur.execute("SELECT DISTINCT TDate, Report, Records, Status from Elig_Own.DST_Report_Status_Test")
rows = cur.fetchall()
for row in rows:
        TDate = row[0]  # first item in the tuple iterable
        Report = row[1] # Second
        Records = row[2] # third
        Status = row[3]  # fourth
        cur.execute("truncate table Elig_own.DST_Report_Status_Test")
        cur.execute('''INSERT into Elig_Own.DST_Report_Status_Test (TDate, Report, Records, Status) 
                        VALUES (?, ?, ?, ?)''',(TDate, Report, Records, Status))      

con.commit()
con.close()

Если я просто напечатаю «строку» в цикле for, я получу список кортежей со всеми полями и значениями, которые мне нужны для моей таблицы, но я не уверен, как передать их обратно впустая таблица, все строки, а не только одна. Почему я получаю только один?

1 Ответ

0 голосов
/ 07 октября 2019

Вы усекаете (очищаете) таблицу каждый раз, когда выполняете цикл for. Поэтому, когда цикл завершится, ваша таблица будет содержать только последнюю вставленную строку. Возможно, вы захотите выполнить TRUNCATE TABLE только один раз, до того, как войдете в цикл.

...