函数对象没有属性"连接"



我的sql炼金术连接似乎有问题,不知道为什么?它有时有效,但下一次就不行了。还有vs code不是自动推荐sql炼金术方法,也许我设置错了?

--database.py文件

from sqlalchemy import create_engine, engine_from_config
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import sessionmaker 

sqlalchemy_conn= 'postgresql://postgres:naija4life@localhost/fastapi database'
ormengine= create_engine(sqlalchemy_conn)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind= ormengine )
Base = declarative_base()

# Dependency
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()

主文件

from logging import exception
from random import randrange
from tkinter.tix import STATUS
from typing import Optional
from urllib import response
from fastapi import Body, FastAPI, Query, Response ,status, HTTPException , Depends
from pydantic import BaseModel
import psycopg2
from psycopg2.extras import RealDictCursor
import time
import sqlalchemy
from sqlalchemy import create_engine, engine_from_config 
from sqlalchemy.ext.declarative import declarative_base 
from sqlalchemy.orm import sessionmaker,session , query
import models 
from database import ormengine , SessionLocal , get_db


app= FastAPI()
models.Base.metadata.create_all(bind=ormengine)

while True:
try:   
conn = psycopg2.connect(dbname= 'fastapi database', 
host= 'localhost' , port= 5432 , 
user = 'postgres', password= 'naija4life' )
cur = conn.cursor()
print('database connection succesful')
break 
except Exception as error :
print("connection failed")
print("error explanation:", error)
time.sleep(2)
class Post(BaseModel):
title: str
content: str
Published: bool = True
rating: Optional[int] = None
@app.get("/sqlalchemy")
def test_post(db: session= Depends(get_db)):
post= db.query(models.Post).all()
return {"data":post} 

我得到的错误:

return await future
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagesanyio_backends_asyncio.py", line 754, in run
result = context.run(func, *args)
File "C:UsersaobinOneDriveDocumentsAPI projapp.main.py", line 78, in test_post
post= db.query(models.Post).all()
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormquery.py", line 
2759, in all
return self._iter().all()
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormquery.py", line 
2894, in _iter
result = self.session.execute(
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormsession.py", line 1691, in execute
conn = self._connection_for_bind(bind)
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormsession.py", line 1532, in _connection_for_bind
return self._transaction._connection_for_bind(
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormsession.py", line 747, in _connection_for_bind
conn = bind.connect()
AttributeError: 'function' object has no attribute 'connect'

在我看来,sql炼金术中的查询方法由于某种原因而不起作用。它也不会在vs代码上自动完成。我尝试过其他变体:sql_expression、

我浏览了SQL炼金术文档。引擎连接url在那里用双引号。。。。所以我在文件中更改了这一点。。。。。它奏效了。

sqlalchemy_conn= 'postgresql://postgres:naija4life@localhost/fastapi database'

成为

sqlalchemy_conn= "postgresql://postgres:naija4life@localhost/fastapi database"

最新更新