在使用sqlalchemy中定义了ORM基础类如下
@as_declarative()
class BaseModel(object):
id = Column(String(32),
primary_key=True,
default=uuid.uuid4().hex,
name='UUID',
key='id')
create_time = Column(TIMESTAMP,
default=datetime.now(),
server_default=func.now(),
name='CREATE_TIME',
key='create_time')
update_time = Column(TIMESTAMP,
default=datetime.now(),
onupdate=datetime.now(),
server_default=func.now(),
server_onupdate=func.now(),
name='UPDATE_TIME',
key='update_time')
data_status = Column(String(length=2), default=0, server_default='0',
name='DATA_STATUS',
key='data_status')
后续所有的数据库对象均继承与基础类,在我执行 update时打印出的sql并不是完整的sql使用的方式是
stmt.compile(bind=self.engine, compile_kwargs={'literal_binds': True})
2021-40-11 17:40:49.503 | MainThread | DEBUG | plugins.database:execute_sql:107 - [※ sql text ※]: UPDATE "A01T_USERS" SET "UPDATE_TIME"=NULL, "USER_CODE"='king', "USER_NAME"='King.Do', "USER_ID"='A00001' WHERE "A01T_USERS"."UUID" = '9BDF6C1F8B8E1775E0536C00A8C0502B'
针对 update_time这种默认值字段语句中显示的是NULL,但实际执行语句此字段是有值的,有没有什么方式能够打印出执行的sql语句。
不准备使用 “create_engine(echo=True)”的方式,这样打印出来的东西太多了