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
JavaScript
x
19
19
1
from sqlalchemy import create_engine, engine_from_config
2
from sqlalchemy.ext.declarative import declarative_base
3
from sqlalchemy.orm import sessionmaker
4
5
6
sqlalchemy_conn= 'postgresql://postgres:naija4life@localhost/fastapi database'
7
ormengine= create_engine(sqlalchemy_conn)
8
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind= ormengine )
9
Base = declarative_base()
10
11
12
# Dependency
13
def get_db():
14
db = SessionLocal()
15
try:
16
yield db
17
finally:
18
db.close()
19
main file
JavaScript
1
50
50
1
from logging import exception
2
from random import randrange
3
from tkinter.tix import STATUS
4
from typing import Optional
5
from urllib import response
6
from fastapi import Body, FastAPI, Query, Response ,status, HTTPException , Depends
7
from pydantic import BaseModel
8
import psycopg2
9
from psycopg2.extras import RealDictCursor
10
import time
11
import sqlalchemy
12
from sqlalchemy import create_engine, engine_from_config
13
from sqlalchemy.ext.declarative import declarative_base
14
from sqlalchemy.orm import sessionmaker,session , query
15
import models
16
from database import ormengine , SessionLocal , get_db
17
18
19
20
21
app= FastAPI()
22
23
models.Base.metadata.create_all(bind=ormengine)
24
25
26
27
while True:
28
try:
29
conn = psycopg2.connect(dbname= 'fastapi database',
30
host= 'localhost' , port= 5432 ,
31
user = 'postgres', password= 'naija4life' )
32
cur = conn.cursor()
33
print('database connection succesful')
34
break
35
except Exception as error :
36
print("connection failed")
37
print("error explanation:", error)
38
time.sleep(2)
39
40
class Post(BaseModel):
41
title: str
42
content: str
43
Published: bool = True
44
rating: Optional[int] = None
45
46
@app.get("/sqlalchemy")
47
def test_post(db: session= Depends(get_db)):
48
post= db.query(models.Post).all()
49
return {"data":post}
50
ERROR I GET:
JavaScript
1
19
19
1
return await future
2
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagesanyio_backends_asyncio.py", line 754, in run
3
result = context.run(func, *args)
4
File "C:UsersaobinOneDriveDocumentsAPI projapp.main.py", line 78, in test_post
5
post= db.query(models.Post).all()
6
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormquery.py", line
7
2759, in all
8
return self._iter().all()
9
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormquery.py", line
10
2894, in _iter
11
result = self.session.execute(
12
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormsession.py", line 1691, in execute
13
conn = self._connection_for_bind(bind)
14
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormsession.py", line 1532, in _connection_for_bind
15
return self._transaction._connection_for_bind(
16
File "C:UsersaobinOneDriveDocumentsAPI projfastlibsite-packagessqlalchemyormsession.py", line 747, in _connection_for_bind
17
conn = bind.connect()
18
AttributeError: 'function' object has no attribute 'connect'
19
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 ,
Advertisement
Answer
I was looking through the SQL alchemy documentation. The engine connection url was in double-quotes there….so I changed that in my document…..it worked.
JavaScript
1
2
1
sqlalchemy_conn= 'postgresql://postgres:naija4life@localhost/fastapi database'
2
became
JavaScript
1
2
1
sqlalchemy_conn= "postgresql://postgres:naija4life@localhost/fastapi database"
2