私のpostgres dbテーブルの特定のカラムに非ASCII文字列が書き込まれないようにします。私はconstrains
を使用することを考えましたが、エンコード変換機能のいずれかを使用しようとするとエラーメッセージが表示されます。 lower
またはbtrim
のような他の文字列関数を使用すると問題は発生しませんでした。非ASCII文字列がカラムに書き込まれないようにする
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)
エラーメッセージは次のとおりです。
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
感謝を:代わりに(https://www.postgresql.org/docs/current/static/sql-createconversion.html変換の詳細)の変換が定義されます!しかし、次のエラーが発生します。 '(ProgrammingError)function convert(text、unknown、unknown)は存在しません。 ヒント:指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要があるかもしれません。 – Framester
私は答えを更新しました。 –
'(ProgrammingError)関数convert(text、name、name)が存在しません。 ヒント:指定された名前と引数の型に一致する関数はありません。明示的な型キャストを追加する必要があるかもしれません。また、私はこのウェブサイトでutf6_to_asciiを見つけました:https://www.postgresql.org/docs/current/static/functions-string.html – Framester