【发布时间】:2020-04-02 22:12:19
【问题描述】:
我正在编写一个程序,它使用以 sqlalchemy 作为客户端的数据库。
这是我的一张桌子
class DownloadRecord(Base):
__tablename__ = "DownloadRecords"
id = Column("Id", Integer, primary_key=True, autoincrement=True)
download_name = Column("DownloadName", Unicode, nullable=False)
download_date = Column(
"DownloadDate", DateTime, default=datetime.datetime.utcnow, nullable=False
)
download_date 列在此处和服务器端表中均使用默认值定义。这是mssql服务器上列的定义
DownloadDate DATETIME NOT NULL DEFAULT GETDATE()
但是我尝试添加记录 DownloadRecord(download_name="new_download_name") 并得到以下异常。
sqlalchemy.exc.IntegrityError: (pyodbc.IntegrityError) ('23000', "[23000] [Microsoft][SQL Server Native Client 11.0][SQL Server]不能 将值 NULL 插入列“DownloadDate”,表 '下载记录';列不允许空值。插入失败。 (515) (SQLExecDirectW); [23000] [Microsoft][SQL Server 本机客户端 11.0][SQL Server]语句已终止。 (3621)") [SQL: 插入 [DownloadRecords] ([DownloadName], [DownloadDate]) 输出 插入。[Id] VALUES (?, ?)] [参数:("new_download_name", None)]
我还尝试使此列可以为空,但是当我添加新行时,DownloadDate 列为空。
如何让它自动使用默认值?
【问题讨论】:
标签: python sql-server sqlalchemy