Получить количество вставленных строк, используя sqlalchemy - PullRequest
2 голосов
/ 16 апреля 2019

Я пишу код для обновления своей базы данных и хотел бы получить количество строк, которые были вставлены после моей фиксации, как я могу это сделать?

for table, endpoint in ENDPOINTS.items():
    url = BASE_URL + endpoint
    response = get_response(url)

    table_object = getattr(Base.classes, table)

    self.add_missing_data(response, table_object, session)

session.commit()
print('Total rows added: {}'.format(xxxxx))

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Ссылаясь на это Q / A :

Вот ваш код:

from sqlalchemy import create_engine

def add_mising_data(self, response, table_object, session):
    con = create_engine(...)
    # insert some data using 
    # con, response, table_object and session
    result_proxy = con.execute("INSERT ...")
    return result_proxy.rowcount # this is the number of inserted rows

# in your loop
total_num_row = 0
for table, endpoint in ENDPOINTS.items():
    url = BASE_URL + endpoint
    response = get_response(url)

    table_object = getattr(Base.classes, table)

    num_row = self.add_missing_data(response, table_object, session)
    total_num_row = total_num_row + num_row

print (total_num_row) # <-- here you are
0 голосов
/ 16 апреля 2019

Если add_missing_data является вашим определенным методом, вы можете просто вернуть количество строк, вставленных в него.

def add_missing_data(self, ...)
     rows = 0
     for i in data:
         # insert data code...

         rows += 1
     return rows

И затем просто суммировать их.

total = 0
for table, endpoint in ENDPOINTS.items():
    total += self.add_missing_data(response, table_object, session)
session.commit()
print('Total rows added: {}'.format(total))

Если вы хотите что-то более динамичное, вы можете использовать события sqlachemy для after_insert или before_insert

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...