SQLAlchemy Columns result processing(SQLAlchemy Columns 结果处理)
问题描述
我正在使用 ibm_db2 驱动程序和 sqlalchemy 处理 IBM DB2 数据库.我的模型是:
I'm working with a IBM DB2 database using ibm_db2 driver and sqlalchemy. My model is:
class User(Model):
id = Column('UID', Integer, primary_key=True)
user = Column('USER', String(20))
password = Column('PASSWORD', String(10))
name = Column('NAME', String(30))
数据库中的字符串字段(例如 name)采用以下形式:
String fields from the database (e.g. name) comes in the form of:
>>> "John "
,其中值由模式填充到字段的完整长度.
, where the value is filled right with blanks to the full length of the field by schema.
我需要将此行为更改为在 query.all():
I need to change this behavior to the sqlalchemy type String (or a derivative thereof) produced follow (e.g. value.strip()) before output results by query.all():
>>> "John"
我该怎么做?
@property 装饰器不适用.我需要更改标准 sqlalchemy String 类的行为.
@property decorator is not applicable. I need to change the behavior of a standard sqlalchemy String class.
推荐答案
我不想改变标准 String 的行为,而是创建一个新类型(然后你可以将它重命名为 String per module based 或其他)但是这样最干净:
I would not want to change the behaviour of the standard String but to make a new type (you can then rename it to String per module basis or whatever) but it is cleanest that way:
from sqlalchemy import types
class StrippedString(types.TypeDecorator):
"""
Returns CHAR values with spaces stripped
"""
impl = types.String
def process_bind_param(self, value, dialect):
"No-op"
return value
def process_result_value(self, value, dialect):
"""
Strip the trailing spaces on resulting values.
If value is false, we return it as-is; it might be none
for nullable columns
"""
return value.rstrip() if value else value
def copy(self):
"Make a copy of this type"
return StrippedString(self.impl.length)
现在您可以使用 StrippedString
代替 String
Now you can use StrippedString
instead of String
这篇关于SQLAlchemy Columns 结果处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:SQLAlchemy Columns 结果处理


基础教程推荐
- 对多索引数据帧的列进行排序 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01