Rumah > Artikel > pembangunan bahagian belakang > Apakah kaedah pelaksanaan mengubah suai nama jadual secara dinamik dalam python sqlalchemy?
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.
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
rreeeeAtas 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!