2009-09-13 5 views
0

Comment utiliser des noms illégaux pour MySQL avec SQLObject?Utilisation de noms illégaux dans MySQL via SQLObject

Dans SQL pure, il est possible d'utiliser backquotes, dire:

SELECT `select from` FROM table1 WHERE 1; 

... peut être utilisé pour sélectionner le champ appelé select from. Est-il possible de dire à SQLObject d'utiliser des backquotes?

+0

Cela dépend de votre définition de 'SQL pur'; les guillemets dans MySQL sont aussi non standard que les crochets dans MS SQL Server. La norme SQL exige que ces identifiants soient délimités - écrits entre guillemets. –

+0

@Jonathan Leffler: OK, les guillemets pourraient bien se passer. Je cherche un moyen d'accéder à une base de données existante avec des noms illégaux à travers SQLObject ou un autre ORM. – Alex

+0

Si vous activez ANSI ou ANSI_QUOTES dans SQL_MODE, vous pourrez également utiliser "MySQL" – bobince

Répondre

1
CREATE TABLE table1 (
    id INT(11), 
    `select from` VARCHAR(255), 
    PRIMARY KEY (id) 
); 
INSERT INTO table1 VALUES(1, 'test value'); 

pour accéder select from de SQLObject, déclare la colonne avec des accents graves:

>>> class Table1(SQLObject): 
...  myIllegallyNamedColumn = Col(dbName="`select from`") 
... 
>>> list(Table1.select()) 
[<Table1 0 myIllegallyNamedColumn='test value'>] 
+0

@ax: Vous avez résolu mon mystère de la semaine – Alex

+0

Je serais méfiant à l'idée de m'en tenir là: en plus d'être MySQL seulement, il semble que c'est un bogue que SQLObject n'échappe pas correctement aux noms de schéma, ce qui devrait être corrigé dans la bibliothèque (à quel point ce qui précède pourrait casser!) – bobince

Questions connexes