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())