sqlalchemy une cartographie dynamique

J'ai le problème suivant:

J'ai la classe:


class Word(object):

    def __init__(self):
        self.id = None
        self.columns = {}

    def __str__(self):
        return "(%s, %s)" % (str(self.id), str(self.columns))

auto.colonnes est une dict qui tiendra (columnName:columnValue) les valeurs. Le nom des colonnes sont connus au moment de l'exécution et qu'ils sont chargés dans un wordColumns liste, par exemple


wordColumns = ['english', 'korean', 'romanian']

wordTable = Table('word', metadata,
                  Column('id', Integer, primary_key = True)
                  )
for columnName in wordColumns:
    wordTable.append_column(Column(columnName, String(255), nullable = False))

J'ai même créé un explicite de mapper des propriétés de "forcer" les colonnes de la table pour être mappé sur parole.les colonnes[nomrubrique], au lieu de la parole.columnName, je n'obtiens aucune erreur sur la cartographie, mais il semble que cela ne fonctionne pas.


mapperProperties = {}
for column in wordColumns:
    mapperProperties['columns[\'%']' % column] = wordTable.columns[column]

mapper(Word, wordTable, mapperProperties)

Lorsque je charge un objet word, SQLAlchemy crée un objet qui a la parole.les colonnes de['anglais'], word.les colonnes ["coréen"] etc. propriétés au lieu de les charger dans word.les colonnes dict. Donc, pour chaque colonne, il crée une nouvelle propriété. En outre parole.les colonnes du dictionnaire n'a même pas existe.

De la même façon, lorsque j'essaie de conserver un mot, SQLAlchemy s'attend à trouver les valeurs de la colonne
dans les propriétés nommé comme word.les colonnes de['anglais'] (string type) au lieu du mot du dictionnaire.les colonnes.

Je dois dire que mon expérience avec Python et SQLAlchemy est assez limité, peut-être qu'il n'est pas possible de faire ce que je suis en train de faire.

Toute aide appréciée,

Merci à l'avance.

InformationsquelleAutor Alex D | 2010-04-04