[Python] congetture su libreria per sql

Manuele Pesenti amicogodzilla a bruttocarattere.org
Ven 2 Apr 2010 16:57:57 CEST


dopo qualche ricerca aggiuntiva ho avuto qualche idea finora risultata
fallimentare... magari qualcuno sa dirmi perché...

ecco come avrei pensato di agire... immaginando per ora di gestire un db
già pronto

### prevedendo di istanziare un oggetto Table a immagine e somiglianza
### di una mia ipotetica tabella ('users') qui sotto descritta
### dall'istanza users_table

from sqlalchemy import Sequence
from sqlalchemy import *
from sqlalchemy.orm import mapper


users_table = Table('users', metadata,
   Column('id', Integer, Sequence('user_id_seq'), primary_key=True),
   Column('name', String(50)),
   Column('fullname', String(50)),
   Column('password', String(12))
)

### se io definisco una mia classe generica in questo modo:
### dove prevedo la variabile myTable come un'istanza della classe Table
### di sqlalchemy (nel nostro caso users_table)

class tableImage(object):
    def __init__(self, myTable):
        for i in myTable.get_children():
            name = i.name
            self.__setattr__('name', name)

### questo non sembrerebbe troppo differente dalla definizione
### da tutorial ben più rigida:

class User(object):
    def __init__(self, name, fullname, password):
        self.name = name
        self.fullname = fullname
        self.password = password

### il problema è che se a questo punto si lancia:

myTableImage = tableImage(users_table)

### fino a qui tutto bene ma se provo a mappare users_table
### su myTableImage ottengo:

mapper(myTableImage, users_table)

Traceback (most recent call last):
  File "<console>", line 1, in ?
  File
"/apps/zope/plonemanuele/eggs/SQLAlchemy-0.6beta3-py2.4.egg/sqlalchemy/orm/__init__.py", line 814, in mapper
    return Mapper(class_, local_table, *args, **params)
  File
"/apps/zope/plonemanuele/eggs/SQLAlchemy-0.6beta3-py2.4.egg/sqlalchemy/orm/mapper.py", line 108, in __init__
    self.class_ = util.assert_arg_type(class_, type, 'class_')
  File
"/apps/zope/plonemanuele/eggs/SQLAlchemy-0.6beta3-py2.4.egg/sqlalchemy/util.py", line 620, in assert_arg_type
    raise exc.ArgumentError(
ArgumentError: Argument 'class_' is expected to be of type '<type
'type'>', got '<class '__main__.tableImage'>'

####################################################################

spero con questo esempietto di aver interessato qualcuno al problema

un grazie per l'attenzione
a presto

	Manuele



Maggiori informazioni sulla lista Python