sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'SELECT 1;'

._.·2025년 4월 8일

Issue

목록 보기
3/5

문제 상황

import os

from dotenv import load_dotenv
from sqlalchemy import create_engine


load_dotenv()

database_url = os.getenv('DATABASE_URL')
engine = create_engine(database_url)

with engine.connect() as conn:
    result = conn.execute("SELECT 1;")
    print(result.scalar())

에서, 다음과 같은 에러가 발생하였다.

Traceback (most recent call last):                                                                                                        
  File "D:\myproj\stock-pattern-recognition-project\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1412, in execute             
    meth = statement._execute_on_connection
AttributeError: 'str' object has no attribute '_execute_on_connection'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "D:\myproj\stock-pattern-recognition-project\db_connection_check.py", line 13, in <module>
    result = conn.execute("SELECT 1;")
  File "D:\myproj\stock-pattern-recognition-project\.venv\lib\site-packages\sqlalchemy\engine\base.py", line 1414, in execute
    raise exc.ObjectNotExecutableError(statement) from err
sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'SELECT 1;'

해결 방법

참고 문헌에 따르면, 아마도 sqlalchemy 버전 문제인듯 하다. 다음과 같이 쿼리를 실행할 때 형태를 바꾸어주면 해결 가능하다. (conn.execute 부분)

import os

from dotenv import load_dotenv
from sqlalchemy import create_engine, text


load_dotenv()

database_url = os.getenv('DATABASE_URL')
engine = create_engine(database_url)

with engine.connect() as conn:
    result = conn.execute(text("SELECT 1;"))
    print(result.scalar())

참고 문헌

https://stackoverflow.com/questions/75464271/attributeerror-str-object-has-no-attribute-execute-on-connection

profile
AI와 사람 사이 그 어딘가

0개의 댓글