通常为所有String字段剥离空格 - SQLAlchemy
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通常为所有String字段剥离空格 - SQLAlchemy相关的知识,希望对你有一定的参考价值。
我通过Flask-SQLAlchemy使用SQLAlchemy作为Web应用程序的ORM。
我想在分配给任何字符串字段时自动引导和尾随条带空格(例如str.strip
)。
一种方法是执行此操作,但需要为每个字符串字段指定:
class User(db.Model):
_email = db.Column('email', db.String(100), primary_key=True)
@hybrid_property
def email(self): return self._email
@email.setter
def email(self, data): self._email = data.strip()
我想更普遍地为每个String字段执行此操作(无需为每个字段编写上述内容)。
答案
一种方法是创建一个处理这种处理的自定义augmented string type:
from sqlalchemy.types import TypeDecorator
class StrippedString(TypeDecorator):
impl = db.String
def process_bind_param(self, value, dialect):
# In case you have nullable string fields and pass None
return value.strip() if value else value
def copy(self, **kw):
return StrippedString(self.impl.length)
然后在模型中用它代替普通的String
:
class User(db.Model):
email = db.Column(StrippedString(100), primary_key=True)
这与您自己的实现完全不同,因为当将值作为参数绑定到查询时进行处理,或者换句话说稍后:
In [12]: u = User(email=' so.much@white.space ')
In [13]: u.email
Out[13]: ' so.much@white.space '
In [14]: session.add(u)
In [15]: session.commit()
In [16]: u.email
Out[16]: 'so.much@white.space'
以上是关于通常为所有String字段剥离空格 - SQLAlchemy的主要内容,如果未能解决你的问题,请参考以下文章
html 使用Liquid / Siteleaf简化HTML缩小。剥离所有换行符,制表符和额外空格。