У меня есть простая HTML страница, на которой пользователя просят ввести и указать имя животного по своему выбору. Затем у меня есть функция python, которая преобразует введенное общее имя животного в его научное c имя, и в какой уровень таксономии оно могло преобразоваться.
Например: Panda -> Ailuropoda melanoleuca, разновидность
Мне нужна помощь на следующем шаге, который заключается в получении выходных данных этой первой функции python и выполнении запроса в pandas фрейм данных в Google BigQuery. Ниже приведен снимок экрана предварительного просмотра таблицы.
Ниже приведен фрагмент моего файла main.py, который включает функцию создания запросов и вызовы функций внизу:
def make_query(taxon, level):
project_id = "sentinel-system"
data_frame = pandas_gbq.read_gbq(
"SELECT * FROM `animal_database.gbif_occurrence` WHERE species=%s LIMIT 10, (taxon)",
project_id=project_id,
index_col=level)
number_of_images = len(data_frame.index)
credentials = service_account.Credentials.from_service_account_file(
'Sentinel System-a6746634aad2.json')
pandas_gbq.context.credentials = credentials
pandas_gbq.context.project = 'sentinel-system'
if occurrences > 0:
print('We found %d images of the animal you searched for!' %(number_of_images))
else:
print('Sorry, we couldn''t find any images of the animal you searched for.')
return 0
taxonomy, level = (common_to_sci('Panda'))
name = taxonomy[-1, -1]
print(name)
print(level)
submission_check = (make_query(name, level))
Проблема с этой функцией двоякая. Во-первых, меньшая проблема заключается в том, что при запуске main.py в настоящее время отображается ошибка
google.api_core.exceptions.BadRequest: 400 Syntax error: Illegal input character "%" at [1:63]
Где использование аргумента кортежа python - это решение, которое я узнал из здесь , и я Не уверен, как должен выглядеть этот запрос SQL.
Вторая, более общая проблема заключается в том, что я понимаю, что запрос SQL должен ссылаться на ту же строку, которая используется в заголовке столбца в моем BigQuery стол. Но что, если бы уровень таксономии был не «вид», а «род / семейство / порядок»? Есть ли способ сделать запрос SQL более универсальным для случаев, когда 'level'! = 'Sizes'?