Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah kaedah pelaksanaan mengubah suai nama jadual secara dinamik dalam python sqlalchemy?

Apakah kaedah pelaksanaan mengubah suai nama jadual secara dinamik dalam python sqlalchemy?

PHPz
PHPzke hadapan
2023-04-28 09:58:061790semak imbas

Kaedah 1

Dalam ORM SQLAlchemy Python, anda boleh menggunakan kod berikut untuk menukar nama jadual kelas model data secara dinamik:

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'

Dalam contoh ini, kita mula-mula mentakrifkan A model data bernama MyModel dan kaitkan dengan jadual my_custom_table_name. Kemudian, jika perlu, kita boleh menukar nama jadual secara dinamik dengan mengakses atribut __table__ kelas model.

Ini kerana rangka kerja ORM itu sendiri secara automatik akan mencipta objek Jadual yang sepadan untuk setiap kelas model data dan menyimpannya dalam atribut __table__ kelas. Kita boleh menggunakan atribut name untuk terus mengemas kini nama objek ini untuk menukar nama jadual secara dinamik.

Sila ambil perhatian bahawa menukar nama jadual secara dinamik boleh menjejaskan ketepatan dan kebolehselenggaraan aplikasi anda. Jadi pertimbangkan sama ada anda benar-benar perlu melakukan ini dan cara merancang untuk perubahan skema pangkalan data.

Kaedah 2

Jika kelas asal kita ialah ini:

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)

Kita boleh menentukan kelas abstraknya:

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

Kemudian kembalikan objek kelas melalui fungsi

rreeee

Atas ialah kandungan terperinci Apakah kaedah pelaksanaan mengubah suai nama jadual secara dinamik dalam python sqlalchemy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam