Обновление BigQuery, как получить количество обновленных строк - PullRequest
0 голосов
/ 21 ноября 2019

Я использую облачные функции Google для подключения к базе данных Google Bigquery и обновления некоторых строк. Облачная функция написана с использованием Python 3.

Мне нужна помощь, чтобы выяснить, как получить сообщение о результате или количество обновленных / измененных строк всякий раз, когда я запускаю обновление dml через функцию. Есть идеи?

from google.cloud import bigquery

def my_update_function(context,data):

    BQ = bigquery.Client()
    query_job = BQ.query("Update table set etc...")
    rows = query_job.result()
    return (rows)

Я понимаю, что строки всегда возвращаются как объект _emptyrowiterator. В любом случае, я могу получить результат или сообщение о результате? Документация говорит, что я должен получить это от метода BigQuery. Но не могу понять это.

1 Ответ

0 голосов
/ 21 ноября 2019

Похоже, что в документации BigQuery Python DB-API нет упоминаний о возвращаемых строках. https://googleapis.dev/python/bigquery/latest/reference.html

Я решил использовать обходной метод для решения этой проблемы, сначала сгенерировав оператор SELECT, чтобы проверить, есть ли совпадения с предложением WHERE в выражении UPDATE.

Пример:

from google.cloud.bigquery import dbapi as bq

def my_update_function(context,data):

        try:
            bq_connection = bq.connect()
            bq_cursor = bq_connection.cursor()
            bq_cursor.execute("select * from table where ID = 1")
            results = bq_cursor.fetchone()

            if results is None:
                print("Row not found.")

            else:
                bq_cursor.execute("UPDATE table set name = 'etc' where ID = 1")
                bq_connection.commit()
                bq_connection.close()

        except Exception as e:
            db_error = str(e)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...