我已经构建了一个 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 的方式有关,但不知道如何继续使用它。任何和所有的帮助将不胜感激。谢谢。