簡體   English   中英

如何驗證 SqlAlchemy 引擎對象

[英]How to verify SqlAlchemy engine object

我可以使用無效的用戶名、密碼或地址聲明engine對象,並且不會出現異常或錯誤:

from sqlalchemy import create_engine
engine = create_engine('mysql://nouser:nopassword@123.456.789')
print engine

它打印喜歡它是一個有效的引擎對象:

Engine(mysql://nouser:***@123.456.789)

驗證(檢查) engine對象是否有效或者它是否“可連接”到數據庫的常用方法是什么?

問題:如何驗證引擎對象是否“可連接”?

來自( 文檔):

請注意,在調用 Engine.connect() 方法或調用依賴於該方法的操作(例如 Engine.execute() )之前,引擎及其底層池不會建立第一個實際 DBAPI 連接。 這樣一來,Engine 和 Pool 可以說是具有惰性初始化行為。

因此,要測試引擎對象是否“可連接”,需要顯式調用Engine.connect()或嘗試以其他方式使用引擎。

from sqlalchemy import create_engine
engine = create_engine('mysql://nouser:nopassword@123.456.789')
engine.connect()

將引發錯誤:

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2005, "Unknown MySQL server host '123.456.789' (0)")

SQLAlchemyError 類提供了有關錯誤的許多詳細信息。 其中之一是 __cause__ ,它給出了錯誤發生的簡短原因(例如密碼不正確或服務器名稱不正確)

from sqlalchemy import create_engine
from sqlalchemy.exc import SQLAlchemyError
engine = create_engine(
    "postgresql+psycopg2://user_name:pass_word@localhost/db_name")
try:
    engine.connect()
    print("success")
except SQLAlchemyError as err:
    print("error", err.__cause__)  # this will give what kind of error

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM