【发布时间】:2021-05-13 17:14:41
【问题描述】:
我正在尝试将数据插入 mysql 服务器,当我尝试将数据添加到 SQLalchemy 会话中时,我收到错误“生成器对象没有添加属性”
db=get_db()
temp = schema.User(**filtered_dict)
insert_data=models.User(**temp.dict())
db = get_db()
db.add(insert_data)
db.commit()
db.refresh()
会话生成器:
def get_db():
db_session = sessionlocal()
try:
yield db_session
finally:
db_session.close()
会话创建
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://root:password@localhost:3305/line_api"
engine = create_engine(
SQLALCHEMY_DATABASE_URL
)
sessionlocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
请帮忙...
【问题讨论】:
-
@IljaEverilä 我希望它不是生成器的问题,唯一的问题是我的对象“sessionlocal”没有添加属性
-
您不直接调用
get_db函数,您通常使用FastAPIsDepends()构造将其插入到需要的位置:def foo(db: SessionLocal = Depends(get_db)):- 这将在foo端点时填充被调用。这就是yield-ing 会话的原因,因为它允许 FastAPI 处理依赖关系并在不再使用时清理它。但是,要做到这一点,您必须使用 FastAPIs 依赖注入方法,而不是直接调用该方法。
标签: python sqlalchemy fastapi