Ich möchte verhindern, dass Nicht-ASCII-Zeichenfolgen in eine bestimmte Spalte in meiner postgres-db-Tabelle geschrieben werden. Ich dachte über die Verwendung von constrains
, aber ich bekomme eine Fehlermeldung, wenn Sie versuchen, eine der Konvertierungsfunktionen Codierung zu verwenden. Die Verwendung anderer String-Funktionen wie lower
oder btrim
funktioniert ohne Problem.Verhindern, dass Nicht-ASCII-Zeichenfolgen in die Spalte geschrieben werden
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)
Die Fehlermeldung lautet:
(ProgrammingError) function utf8_to_ascii(text) does not exist
Das ist mein postgresql Version ist:
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
Dank! Dies führt jedoch zu folgendem Fehler: '(ProgrammingError) function convert (Text, unbekannt, unbekannt) existiert nicht HINWEIS: Keine Funktion stimmt mit den angegebenen Namen und Argumenttypen überein. Sie müssen möglicherweise explizite Typumwandlungen hinzufügen. – Framester
Ich aktualisierte die Antwort. –
Nun heißt es '(ProgrammingError) -Funktion konvertieren (Text, Name, Name) existiert nicht HINWEIS: Keine Funktion entspricht den angegebenen Namen und Argumenttypen. Möglicherweise müssen Sie explizite Typumwandlungen hinzufügen. Auch ich fand utf6_to_ascii auf dieser Website: https://www.postgresql.org/docs/current/static/functions-string.html – Framester