'function object has no attribute 'connect'
Seems there's a problem with my sql alchemy connection, don't get why? it works sometimes and then doesn't the next. Also vs code isn't auto recommending sql alchemy methods, maybe I've set it up wrong?
--database.py file
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()
main file
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}
ERROR I GET:
return await future
File "C:\Users\aobin\OneDrive\Documents\API proj\fast\lib\site-packages\anyio\_backends\_asyncio.py", line 754, in run
result = context.run(func, *args)
File "C:\Users\aobin\OneDrive\Documents\API proj\app\.\main.py", line 78, in test_post
post= db.query(models.Post).all()
File "C:\Users\aobin\OneDrive\Documents\API proj\fast\lib\site-packages\sqlalchemy\orm\query.py", line
2759, in all
return self._iter().all()
File "C:\Users\aobin\OneDrive\Documents\API proj\fast\lib\site-packages\sqlalchemy\orm\query.py", line
2894, in _iter
result = self.session.execute(
File "C:\Users\aobin\OneDrive\Documents\API proj\fast\lib\site-packages\sqlalchemy\orm\session.py", line 1691, in execute
conn = self._connection_for_bind(bind)
File "C:\Users\aobin\OneDrive\Documents\API proj\fast\lib\site-packages\sqlalchemy\orm\session.py", line 1532, in _connection_for_bind
return self._transaction._connection_for_bind(
File "C:\Users\aobin\OneDrive\Documents\API proj\fast\lib\site-packages\sqlalchemy\orm\session.py", line 747, in _connection_for_bind
conn = bind.connect()
AttributeError: 'function' object has no attribute 'connect'
It seems to me that the query method from sql alchemy isnt working for some reason. It doesn't autocomplete on vs code either.I've tried the other variants: sql_expresson ,
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
