Создание ORM с помощью Python's Storm
Вопрос
Вопрос основан на нить, поскольку я заметил, что 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
Это наводит меня на мысль, что какой-то модуль отсутствует.Там нет модуля instance
в Шторм.
Решение
Я опущу детали подключения, потому что я не очень хорошо знаком с 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()
Конечно, если вы хотите выполнить конструктор и инициализацию в одной строке, вы можете использовать существование's расширяющиеся:
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()
Не связан с StackOverflow