8
votes

Cas d'insensible String Colonnes à Sqlalchemy?

Puis-je créer une colonne de chaîne insensible à casse dans SQLalchemy? Je suis en train d'utiliser SQLite et theres probaby un moyen de le faire à travers DB en changeant la collation, mais je veux le garder dans SQLalchemy / Python.


0 commentaires

3 Réponses :


3
votes

sqlite autorise COLLATION NOCASE sur champs de texte:

SQLite version 3.6.22
sqlite> create table me (name text collate nocase);
sqlite> .schema
CREATE TABLE me (name text collate nocase);
sqlite> insert into me values("Bob");
sqlite> insert into me values("alice");
sqlite> select * from me order by name;
alice
Bob


0 commentaires

5
votes

SQLalchemy ne semble pas autoriser les clauses d'assemblage à la phase de création de table (DDL) par défaut, mais j'ai finalement compris un moyen de faire fonctionner ce travail sur SQLALCHEMY 0.6+. Malheureusement, cela implique un peu de sous-classement et de décoration, mais c'est raisonnablement compact.

just_a_table = Table('table_name', metadata,
               Column('case_insensitive', CI_String(8, collate='NOCASE'), nullable=False))


0 commentaires

9
votes

Dans la SQLALCHEMY 0.8, ils ont ajouté le paramètre de collement à tous les types de chaîne. Le mot clé COLLER est maintenant pris en charge par plusieurs back-fins de DB, y compris MySQL, SQLite et PostgreSQL. Vous devriez être capable d'écrire quelque chose comme ceci: xxx

HTTPS : //bitbucket.org/zzezeek/sqlalchemy/issues/2276


0 commentaires