Python sqlalchemyでテーブル名を動的に変更する実装方法は何ですか?

PHPz
リリース: 2023-04-28 09:58:06
転載
1800 人が閲覧しました

方法 1

Python の SQLAlchemy ORM では、次のコードを使用してデータ モデル クラスのテーブル名を動的に変更できます:

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyModel(Base):
    __tablename__ = 'my_custom_table_name'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
#... 其它定义或使用...
# 动态修改表名
MyModel.__table__.name = 'my_new_table_name'
ログイン後にコピー

この例では、最初に A を定義します。 MyModel という名前のデータ モデルを作成し、それを my_custom_table_name テーブルに関連付けます。その後、必要に応じて、モデル クラスの __table__ 属性にアクセスして、テーブル名を動的に変更できます。

これは、ORM フレームワーク自体が各データ モデル クラスに対応する Table オブジェクトを自動的に作成し、クラスの __table__ 属性に格納するためです。 name 属性を使用してこのオブジェクトの名前を直接更新し、テーブル名を動的に変更できます。

テーブル名を動的に変更すると、アプリケーションの正確性と保守性に影響を与える可能性があることに注意してください。したがって、これを本当に行う必要があるかどうか、またデータベース スキーマの変更をどのように計画するかを検討してください。

メソッド 2

元のクラスが次の場合:

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyModel(Base):
    __tablename__ = 'my_custom_table_name'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
ログイン後にコピー

その抽象クラスを定義できます:

class MyModelCls(Base):
    __abstract__ = True  # 关键语句,定义所有数据库表对应的父类
    __table_args__ = {"extend_existing": True}  # 允许表已存在
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)
ログイン後にコピー

次に、関数を通じてクラス オブジェクトを返します。

りー

以上がPython sqlalchemyでテーブル名を動的に変更する実装方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート