У меня есть этот класс:
class Payment(db.Model):
__tablename__ = "payment"
id = db.Column("payment_id", db.Integer, primary_key=True, autoincrement=True)
date = db.Column("payment_date", db.DateTime)
payment_collected = db.Column(db.Integer)
amount_collected = db.Column(db.String(15))
payment_type_id = db.Column("payment_type", db.Integer)
reference_number = db.Column(db.String(255))
is_invoice_data = db.Column(db.Integer)
is_active = db.Column(db.Integer)
payee_user_id = db.Column(db.Integer, db.ForeignKey("user.user_id"))
services_rendered_id = db.Column(
db.Integer, db.ForeignKey("services_rendered.service_id")
)
, который отображается непосредственно в таблицу в моей базе данных.Для столбца payment_date
(представленного свойством date
класса) по умолчанию установлено значение CURRENT_TIMESTAMP
.Однако при вызове этого класса в качестве конструктора, например:
new_payment = Payment(
services_rendered_id=new_sr.id,
payment_collected=True,
payment_type_id=payment_type_id,
payee_user_id=payee_id,
amount_collected=amount_collected
)
, сгенерированный SQL вставляет значение во ВСЕ столбцы карты, включая payment_date
, и передает None для тех столбцов, которые я не указал вКонструктор.
Пример:
INSERT INTO
payment
(payment_date, payment_collected, amount_collected, payment_type, reference_number, is_invoice_data, is_active, payee_user_id, services_rendered_id)
VALUES
(None, 1, '258.40', '7', None, None, None, 3240, 28)
Как можно избежать такого поведения, чтобы SQLAlchemy не переопределял значения по умолчанию, которые я установил в моей базе данных?