我是快速 api 的新手。我正在尝试从我的表中获取用户但收到此错误:
user = await db.query(User).filter(User.login == data['login']).first()
AttributeError:“依赖”对象没有属性“查询”
这是我的服务器/database.py
import os
from sqlmodel import SQLModel, Session
from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine
from sqlalchemy.orm import sessionmaker
DATABASE_URL = os.environ.get("DATABASE_URL")
engine = create_async_engine(DATABASE_URL, echo = True, future = True)
async def init_db():
async with engine.begin() as conn:
# await conn.run_sync(SQLModel.metadata.drop_all)
await conn.run_sync(SQLModel.metadata.create_all) # init is ok, db table working
pass
async def get_session() -> AsyncSession:
async_session = sessionmaker(
engine, class_ = AsyncSession,
expire_on_commit = False
)
async with async_session() as session:
yield session
这是服务器/web_server.py
from fastapi import Depends, FastAPI
from sqlalchemy.future import select
from fastapi_socketio import SocketManager
from fastapi_login import LoginManager
import json
from database import get_session, init_db
from models import User, File
app = FastAPI()
sio = SocketManager(app = app)
@app.on_event("startup")
async def on_startup():
await init_db() # is ok
@app.sio.on('connect')
async def handle_connect(sid, connection_data):
await app.sio.emit('connect', 'User joined') # is ok
@app.sio.on('authorize')
async def authorize(sid, message, db = Depends(get_session)):
data = json.loads(message) # is ok
user = await db.query(User).filter(User.login == data['login']).first() # error in this line
print(user)
if __name__ == '__main__':
import uvicorn
uvicorn.run("web_server:app", host = '0.0.0.0', port = 8000, reload = True, debug = False)
我正在为我的应用程序使用 socketio,socketio.on('authorize')消息包含data = {'login' : '...', 'password' : '...'}我想用它来查找我的postgresql表中的用户检查密码并授权它。因此,“get_session”出现问题,查询、执行和提交无法使用它,得到相同的错误AttributeError: 'Depends' object has no attribute ..。