-1

質問はスレッドに基づいています。Storm で SQL スキーマを再利用できることがわかったからです。

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

これは、一部のモジュールが欠落していることを示唆しています。instanceStorm にはモジュールがありません。

4

1 に答える 1

4

私は 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()

もちろん、コンストラクターと初期化を 1 行で実行したい場合は、pysistenceexpandosを使用できます。

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()
于 2009-11-22T19:57:41.733 に答える