代码之家  ›  专栏  ›  技术社区  ›  anon

用巨蟒风暴制作ORM

  •  -1
  • anon  · 技术社区  · 15 年前

    这个问题是基于 the thread ,因为我观察到Storm允许我重用我的SQL模式。

    如何解决暴风雪中的以下错误信息?

    代码基于Jason的答案和Storm的手册。

    import os, pg, sys, re, psycopg2, storm
    from storm.locals import *
    from storm import *
    
    class Courses():
        subject = Unicode()
    
    database = create_database("postgres://naa:123@localhost:5432/tk")
    store = Store(database)
    
    course = Courses()
    course.subject = 'abcd'
    store.add(course)
    

    它给你

    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
    

    这对我来说意味着某个模块丢失了。没有模块 instance 在风暴中。

    1 回复  |  直到 12 年前
        1
  •  4
  •   Jason Baker    15 年前

    我会忽略连接细节,因为我对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()
    

    当然,如果要在一行上进行构造函数和初始化,可以使用 pysistence expandos :

    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()
    
    推荐文章