SQLAlchemy を使用していて、関数group_by
をインタープリターにインポートしようとしていますが、見つからないようです。モジュール ツリーを検索して、この関数が存在する場所を確認する簡単な方法はありますか?
もちろん、私はfrom sqlalchemy import + tab
手動で検索を試みましたが、各ツリー レベルでチェックするオプションが多すぎます。
SQLAlchemy を使用していて、関数group_by
をインタープリターにインポートしようとしていますが、見つからないようです。モジュール ツリーを検索して、この関数が存在する場所を確認する簡単な方法はありますか?
もちろん、私はfrom sqlalchemy import + tab
手動で検索を試みましたが、各ツリー レベルでチェックするオプションが多すぎます。
これを行う簡単な方法は、インタプリタの外に出て、ドキュメントを検索することです。
一方、インポートするそのような機能はないように見えます。group_by
メソッドとオブジェクトがsqlalchemy.orm.query.Query
あります。sqlalchemy.sql.expression.[Compound]Select[Base]
しかし、名前を探してパッケージ内のすべてのモジュールを再帰的に調べたい場合は、次のようにします。
import inspect
def find_name(package, name):
if hasattr(package, name):
yield package
for modulename, submodule in inspect.getmembers(package, inspect.ismodule):
yield from find_name(submodule, name)
Python 3.2 以前では、 をyield from
ループに置き換える必要があります。
for modulename, submodule in inspect.getmembers(package, inspect.ismodule):
for result in find_name(submodule, name):
yield result
また、すべての結果ではなく最初の結果だけが必要な場合は、return
代わりにyield
ingを実行できます。
def find_name(package, name):
if hasattr(package, name):
return package
for modulename, submodule in inspect.getmembers(package, inspect.ismodule):
result = find_name(submodule, name)
if result:
return result
SQLAlchemy.__all__
公開されているモジュール内のすべての関数のリストを返す印刷を試してください。