ように私はPythonでSQLAlchemyのを使用していますが、次のように宣言型のベースから継承私のクラスを宣言していますテーブル名:私は、パラメータとして__tablename__
を定義したいユーザーとしてPythonのSQLAlchemyの - 変数
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class SomeClass(Base):
__tablename__ = 'some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
、とないハードコーディングされた値が、このような何か:
class SomeClass(Base):
__tablename__ = f'{environment}_some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
は、それは私がこのパッケージをインポートするときf'{environment}_some_table'
が評価されますので、私は後の段階でそれを変更することはできませんというのが私の理解です(インタラクティブノートブックの場合)。私はネストされたクラスとカプセル化によってこれを解決しようとする壊れたコードを持っていますが、私は外部クラスのインスタンス変数を参照することはできません。
class Outer:
def __init__(self, env):
self.environment = env
class SomeClass(Base):
__tablename__ = f'{self.environment}_some_table'
id = Column(Integer, primary_key=True)
name = Column(String(50))
これらのクラス間に特別な関係が確立されていないため、ネストされたクラスを使用しないほうがよいという2つの質問があります。 この問題を解決するにはどのようなデザインを使用しますか?
ありがとうございます!
"実行時に' f '{環境} _some_table''が評価されることは、 "実行時"の意味によります。単語の通常の意味では、実行時に実際に評価されます。 –
さて、私は実際にランタイムの定義が何で、あなたが正しいのかチェックアウトしました。これを反映するように質問を修正します。ありがとう! – Pezze