Tôi có một mô hình sqlalchemy, trong đó tất cả hầu hết tất cả các bảng/đối tượng đều có trường ghi chú. Vì vậy, để thử theo nguyên tắc DRY, tôi đã chuyển trường này sang một lớp mixin.sqlalchemy Di chuyển các cột kết hợp để kết thúc
class NotesMixin(object):
notes = sa.Column(sa.String(4000) , nullable=False, default='')
class Service(Base, NotesMixin):
__tablename__ = "service"
service_id = sa.Column(sa.Integer, primary_key=True)
name = sa.Column(sa.String(255), nullable=False, index=True, unique=True)
class Datacenter(Base, NotesMixin):
__tablename__ = "datacenter"
datacenter_id = sa.Column(sa.Integer, primary_key=True)
name = sa.Column(sa.String(255), nullable=False, index=True, unique=True)
class Network(Base, NotesMixin, StatusMixin):
__tablename__ = "network"
network_id = sa.Column(sa.Integer, primary_key=True)
etc...
Bây giờ cột ghi chú là cột đầu tiên trong mô hình/db. Tôi biết nó không ảnh hưởng đến chức năng của ứng dụng của tôi, nhưng nó kích thích tôi một chút để xem ghi chú trước khi id, vv Bất kỳ cách nào để di chuyển nó đến cùng?
Tôi chắc chắn ưa thích giải pháp sạch hơn vì nó được xây dựng thành sqlalchemy rồi. Tôi nhận thấy rằng thứ tự mà bạn thừa hưởng các vấn đề mixin, nếu bạn có nhiều mixin cơ sở khai báo. Đó là điều tôi mong đợi. –
Giải pháp tuyệt vời, cảm ơn! – sleepycal
Trong khi điều này đòi hỏi ít mã, nhưng nó cảm thấy một vòng xoay nhỏ như nó sử dụng một cách "hack", đó là, một tác dụng phụ không có ý thức của ràng buộc khóa nước ngoài để đảm bảo đặt hàng. Tôi thích giải pháp '_creation_order' vì đó là cách dự định để ** KHUYẾN CÁO ** đặt thứ tự tạo cột, bất kể là FK hay không. – Devy