2009-11-22 3 views
-1

La question est basée sur the thread, depuis que j'ai observé que Storm me permet de réutiliser mes schémas SQL. Comment pouvez-vous résoudre le message d'erreur suivant dans Storm?Faire ORM avec Storm de Python

Comment pouvez-vous résoudre le message d'erreur suivant dans Storm?

Le code est basé sur la réponse de Jason et sur le manuel de Storm.

import os, pg, sys, re, psycopg2, storm 
from storm.locals import * 
from storm import * 

class Courses(): 
    subject = Unicode() 

database = create_database("postgres://naa:[email protected]:5432/tk") 
store = Store(database) 

course = Courses() 
course.subject = 'abcd' 
store.add(course) 

Il vous donne

Traceback (most recent call last):            
    File "<stdin>", line 13, in <module> 
    File "/usr/lib/python2.6/dist-packages/storm/store.py", line 245, in add 
    obj_info = get_obj_info(obj) 
    File "/usr/lib/python2.6/dist-packages/storm/info.py", line 40, in get_obj_info 
    obj_info = ObjectInfo(obj) 
    File "/usr/lib/python2.6/dist-packages/storm/info.py", line 162, in __init__ 
    self.cls_info = get_cls_info(type(obj)) 
    File "/usr/lib/python2.6/dist-packages/storm/info.py", line 51, in get_cls_info 
    cls.__storm_class_info__ = ClassInfo(cls) 
    File "/usr/lib/python2.6/dist-packages/storm/info.py", line 69, in __init__ 
    raise ClassInfoError("%s.__storm_table__ missing" % repr(cls)) 
storm.exceptions.ClassInfoError: <type 'instance'>.__storm_table__ missing 

Cela me porte à croire que certains module est absent. Il n'y a pas de module instance dans Storm.

+1

S'il vous plaît afficher le matériel INSERT du manuel de tempête dans la question. Vous avez le code, s'il vous plaît postez le pour que nous puissions tous le voir. –

+0

Veuillez vous concentrer sur une seule question. Soit "écrire SQL en tempête" ou "qu'est-ce que ça veut dire"? S'il vous plaît se concentrer sur ** une ** chose. Aussi, s'il vous plaît ne posez pas une question qui est déjà répondu sur le site Web de la tempête. Veuillez lire le site Web Storm, créer du code, puis poser des questions spécifiques pour la seule chose que vous n'avez pas comprise lors de la création de votre propre code. S'il vous plaît fournir votre propre code tenté dans toutes les questions. Ce n'est pas "Do My Programming For Me.COM". –

Répondre

4

Je vais laisser de côté les détails de connexion parce que je ne connais pas très bien Postgres.

from storm.locals import * 

class Courses(object): 
    __storm_table__ = 'courses' 
    pkey = Int(primary=True) 
    course_nro = Unicode() 

course = Courses() 
course.course_nro = 'abcd' 
store.add(course) 
store.commit() 

Bien sûr, si vous voulez faire le constructeur et l'initialisation sur une ligne, vous pouvez utiliser l » expandospysistence:

from storm.locals import * 
from pysistence import Expando 

class Courses(Expando): 
    __storm_table__ = 'courses' 
    pkey = Int(primary=True) 
    course_nro = Unicode() 

course = Courses(course_nro='abcd') 
store.add(course) 
store.commit() 
Questions connexes