Развертывание Vercel не создает таблицы в PostgreSQL с помощью FastAPI/SQLModel ⇐ Python

Программы на Python
Anonymous
Развертывание Vercel не создает таблицы в PostgreSQL с помощью FastAPI/SQLModel

Сообщение Anonymous »

Я развертываю приложение FastAPI с SQLModel на Vercel. Переменная среды DATABASE_URL установлена ​​правильно в Vercel, и приложение может подключаться к базе данных PostgreSQL, размещенной в Supabase.
Однако проблема заключается в том, что во время развертывания таблицы не создаются в базе данных. Несмотря на успешное подключение, приложение взаимодействует только с существующими таблицами (если они уже созданы), но не может создать новые при попытке инициализировать схему базы данных.
Вот что я что уже сделано:
  • Проверено, правильно ли установлена ​​переменная среды DATABASE_URL в переменных среды Vercel.
  • Приложение FastAPI отлично работает локально, и таблицы создаются при его запуске на локальном компьютере.
  • Я убедился, что логика создания таблиц запускается в приложении FastAPI. . Вот код для создания движка и таблицы:

Код: Выделить всё

   from sqlmodel import SQLModel, create_engine
import os

database_url = os.getenv("DATABASE_URL")
if not database_url:
raise ValueError("DATABASE_URL environment variable not set")

#Note: My DATABASE_URL also starts with postgresql://.... and is hosted online

engine = create_engine(database_url)

def init_db():
SQLModel.metadata.create_all(engine)

Код: Выделить всё

from fastapi import FastAPI
import uvicorn
from contextlib import asynccontextmanager
from db import engine, init_db

@asynccontextmanager
async def lifespan(app: FastAPI):
try:
init_db()
yield
finally:
await engine.dispose()

app = FastAPI(
lifespan=lifespan)

if __name__ == "__main__":
uvicorn.run(app)
  • Я пробовал повторно развернуть приложение несколько раз и даже пробовал разные способы запуска создания таблицы, но Vercel, похоже, этого не делает. создайте их в базе данных PostgreSQL.
  • Проверил логи в Vercel, ошибок, связанных с подключением к базе данных или созданием таблиц, нет.
Вопрос:
Почему Vercel может не создавать новые таблицы в базе данных PostgreSQL, даже если приложение успешно подключается к базе данных и, что удивительно, localhost создает таблицы по тому же URL-адресу, но Vercel нет? Нужно ли что-то настроить в Vercel по-другому, чтобы создание таблиц работало? Будем очень признательны за любые советы или шаги по отладке!


Подробнее здесь: https://stackoverflow.com/questions/790 ... i-sqlmodel

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