class log_supplier(Base): __tablename__='log_supplier' id = Column(Integer, primary_key=True) arrearage=Column() amount = Column(float) status = Column(float) updated_at=Column(DateTime)如果某一列是小数怎么表示
时间: 2024-03-24 12:40:08 浏览: 55
如果某一列是小数,可以使用`Float`列类型表示,例如:
```python
class LogSupplier(Base):
__tablename__ = 'log_supplier'
id = Column(Integer, primary_key=True)
arrearage = Column(Float)
amount = Column(Float)
status = Column(Float)
updated_at = Column(DateTime)
```
在这里,`arrearage`、`amount`和`status`这三列都是小数类型,使用`Float`表示,`updated_at`列是日期时间类型,使用`DateTime`表示。
相关问题
class log_supplier(Base): __tablename__='log_supplier' id = Column(Integer, primary_key=True) =Column(String(60)) user_id = Column(String(20)) status = Column(String(50)) updated_at=Column(DateTime如果列明是汉字怎么写
如果列名是汉字,可以使用中文作为变量名,但不建议使用中文作为列名。如果一定要使用中文作为列名,可以在定义表的时候使用反引号将中文列名括起来,例如:
```python
class LogSupplier(Base):
__tablename__ = 'log_supplier'
id = Column(Integer, primary_key=True)
`供应商名称` = Column(String(60))
user_id = Column(String(20))
status = Column(String(50))
updated_at = Column(DateTime)
```
在使用这个表的时候,需要使用反引号将列名括起来,例如:
```python
session.query(LogSupplier).filter(LogSupplier.`供应商名称` == 'ABC供应商').all()
```
class OperationLog(db.Model): """操作日志表""" __bind_key__ = 'db2' __tablename__ = 'operation_log' id = mapped_column(Integer, primary_key=True) userid = mapped_column(String(16)) username = mapped_column(String(32), index=True) endpoint = mapped_column(String(128)) methods = mapped_column(String(16)) full_path = mapped_column(String(256)) c_date = mapped_column(DateTime) @staticmethod def add_operation_log(userid: str, username: str): """新增操作日志""" c_date = datetime.now() operation_log = OperationLog() operation_log.userid = userid operation_log.username = username operation_log.endpoint = request.endpoint operation_log.methods = request.method operation_log.full_path = request.full_path operation_log.c_date = c_date db.session.add(operation_log) db.session.execute( update(User).where(User.userid == userid).values(lastlogin=c_date)) db.session.commit() return True 帮我优化并建议这段代码
以下是对代码的优化和建议:
1. 使用类方法代替静态方法
在这种情况下,我们可以使用类方法代替静态方法。这样,我们可以从类本身传递参数而不是从实例传递参数,并且可以轻松地访问类属性。
2. 使用参数注释
为了更好地理解代码,我们建议使用参数注释,以便将参数名称,类型和说明文档化。
3. 使用类型提示
在函数参数和返回值中使用类型提示可以提高代码的可读性和可维护性,并帮助 IDE 提供更好的代码补全和错误检查。
4. 使用 try-finally 块
使用 try-finally 块可以确保无论是否出现异常,都会关闭数据库会话。
5. 使用 with 语句
使用 with 语句可以确保数据库会话在使用后被关闭,而无需显式调用 commit 或 rollback 方法。
以下是优化后的代码:
```
class OperationLog(db.Model):
"""操作日志表"""
__bind_key__ = 'db2'
__tablename__ = 'operation_log'
id = mapped_column(Integer, primary_key=True)
userid = mapped_column(String(16))
username = mapped_column(String(32), index=True)
endpoint = mapped_column(String(128))
methods = mapped_column(String(16))
full_path = mapped_column(String(256))
c_date = mapped_column(DateTime)
@classmethod
def add_operation_log(cls, userid: str, username: str) -> bool:
"""新增操作日志"""
c_date = datetime.now()
operation_log = cls()
operation_log.userid = userid
operation_log.username = username
operation_log.endpoint = request.endpoint
operation_log.methods = request.method
operation_log.full_path = request.full_path
operation_log.c_date = c_date
with db.session.begin():
db.session.add(operation_log)
db.session.execute(
update(User).where(User.userid == userid).values(lastlogin=c_date))
return True
```
阅读全文