0

我已经构建了一个 fastAPI 应用程序,当我在 localhost 上使用它时它运行良好。我使用heroku部署它并使用ClearDB用作mysql数据库,但它不会连接到数据库并给出错误提示:

无法从 MySQL 表中获取记录:1045(28000):用户“用户名”@“ip-0-0-0-0.eu-west-1.compute.internal”的访问被拒绝(使用密码:是)1045( 28000):用户“用户名”@“ip-0-0-0-0.eu-west-1.compute.internal”的访问被拒绝(使用密码:是)400

更改了ip之后的号码。

 DATABASE_URL = "mysql+mysqlconnector://username:password@hostname:3306/databasename"

database = Database(DATABASE_URL)
metadata_obj = MetaData()
engine = create_engine(
    DATABASE_URL, connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
metadata = sqlalchemy.MetaData()
Base = declarative_base()

user_points = sqlalchemy.Table(
    "points",
    metadata_obj,
    sqlalchemy.Column("points1", sqlalchemy.Integer,),
    sqlalchemy.Column("points2", sqlalchemy.Integer),
)

engine = sqlalchemy.create_engine(
    DATABASE_URL
)
metadata.create_all(engine)

app = FastAPI()
@app.on_event("startup")
async def connect():
    await database.connect()

@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()
class UserName(BaseModel):
    points1: int
    points2: int
@app.post('/userdata/', response_model=UserName)
async def get_points(user: str):
    username=user
    lists = ids(username)
    lists.get_user_points(str(username))
    query = user_points.select()
    user = await database.fetch_one(query)
    return {**user}

if __name__ == "__main__":
    uvicorn.run("api:app", reload= True, host="127.0.0.1", port=5000, log_level="info")

#All functions and required libraries are imported

我尝试使用相同的凭据通过 MySQL 工作台和命令行进行连接,它似乎工作正常,但不适用于脚本。

这里可能是什么问题?我想知道这是否与我在这里使用 mysql-connector 的方式有关,但不知道如何继续使用它。任何和所有的帮助将不胜感激。谢谢。

4

0 回答 0