Колба и супабазная формаPython

Программы на Python
Anonymous
Колба и супабазная форма

Сообщение Anonymous »

Мой клиент попросил меня создать серверную часть Flask, используя Supabase в качестве базы данных. Вот проблема:
Form data: {'employee': 'Alexandre Martins', 'company': 'test', 'area': 'test', 'sector': 'test', 'city': 'test', 'service': '2024-04-10', 'observations': 'Ragdgh', 'initial_complaint': 'dgfh', 'psychologist': '1'}
Это данные, которые я получаю от внешнего интерфейса, и с самого начала возникла проблема. Я мог обработать либо запрос сотрудника, либо запрос компании, но не смог получить идентификаторы обоих. Итак, я решил разделить запросы на две отдельные функции конечной точки. Я также решил разделить отправку данных, поэтому структура стала такой:
Найдите идентификатор компании.
Найдите идентификатор сотрудника.
Конечная точка для регистрации ответа внешнего интерфейса.
Конечная точка для вставки в Supabase.
Ответы продолжают возвращать 500 ошибок, хотя данные соответствуют таблицам Supabase и совпадают между внешним и внутренним интерфейсом. Мне никогда не удается запросить идентификаторы сотрудников и компании. Что я должен делать? Я знаю, что мой код беспорядочный, но я перепробовал все, чтобы он работал, и уже заблудился. Эту дырку перевел искусственный интеллект, поэтому, возможно, некоторые вещи могут не иметь особого смысла. сорри.
def find_company_id(company_name):
response_company = Client.from_('companies').select('company_id').eq('company', company_name).execute()
print("Company query response:", response_company)

if 'data' not in response_company or len(response_company['data']) == 0:
raise Exception("Company not found")

company_id = response_company['data'][0]['company_id']
return company_id

def find_employee_id(employee_name, company_id):
response_employee = Client.from_('employees').select('employee_id').eq('name', employee_name).eq('company_id', company_id).execute()
print("Employee query response:", response_employee)

if 'data' not in response_employee or len(response_employee['data']) == 0:
raise Exception("Employee not found")

employee_id = response_employee['data'][0]['employee_id']
return employee_id

@app.route('/insert-service', methods=['POST'])
def insert_service():
global form_data

try:
# Receive form data
form_data = request.json

# Call endpoint to process data and insert into the service table
response = process_data_and_insert()
return response

except Exception as e:
return {'error': str(e)}, 500

@app.route('/process-data-and-insert', methods=['POST'])
def process_data_and_insert():
global form_data

try:
# Extract form data
company_name = form_data['company']
employee_name = form_data['employee']
psychologist = form_data['psychologist']
area = form_data['area']
sector = form_data['sector']
city = form_data['city']
service_date = form_data['service']
observations = form_data['observations']
initial_complaint = form_data['initial_complaint']

print("Form data:", form_data)
print("Company:", company_name)
print("Employee:", employee_name)

# Find company ID
company_id = find_company_id(company_name)
print("Company ID:", company_id)

# Find employee ID
employee_id = find_employee_id(employee_name, company_id)
print("Employee ID:", employee_id)

# Insert into the service table
response_insert = Client.from_('services').insert([
{'employee': employee_id, 'psychologist': psychologist, 'company': company_id, 'area': area,
'sector': sector, 'city': city, 'service_date': service_date, 'observations': observations,
'initial_complaint': initial_complaint}
]).execute()

if 'error' in response_insert:
raise Exception(response_insert['error'])

return {'message': 'Service inserted successfully'}, 200

except Exception as e:
return {'error': str(e)}, 500


Подробнее здесь: https://stackoverflow.com/questions/784 ... abase-form

Вернуться в «Python»