【发布时间】:2016-12-09 11:17:22
【问题描述】:
我想防止将非 ASCII 字符串写入我的 postgres db 表中的特定列。我考虑过使用constrains,但在尝试使用任何编码转换函数时都会收到错误消息。使用 lower 或 btrim 等其他字符串函数没有问题。
metadata = MetaData()
constrains = [CheckConstraint('lower(name) = name', name='enforce_lower'),
CheckConstraint('utf8_to_ascii(name) = name', name='prevent_non_ascii')]
concepts_table = Table('test20', metadata,
Column('name', Text, *constrains))
metadata.create_all(engine, checkfirst=False)
错误信息是:
(ProgrammingError) function utf8_to_ascii(text) does not exist
这是我的 postgresql 版本:
SELECT version();
PostgreSQL 9.5.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-16), 64-bit
【问题讨论】:
标签: postgresql unicode sqlalchemy