Можно ли использовать именованный кортеж с SQLalchemy?

У меня есть пытался заставить именованный кортеж работать с SQLalchemy, но безрезультатно .. Веб-поиск не очень проясняет, и я новичок в Python и SQLalchemy, поэтому я не совсем уверен, гоняюсь ли я за ветряными мельницами :( основная идея состоит в том, что у меня есть именованный кортеж, то есть:

Point=namedtuple('Point',['x','y'])

который в основном создает класс Point (кортеж), если я прав. Сначала это работает нормально, и я могу создавать такие объекты, как:

p=Point(3,4)

Но после того, как я создам движок и т.д. и вызвать mapper, я не могу создавать больше объектов без этой ошибки:

Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    f=Point(3,4)
TypeError: __init__() takes exactly 1 argument (3 given)

Есть идеи, почему это происходит? Кто-нибудь знает, как заставить namedtuple работать с sqlalchemy? Конечно, я могу d уточнить мой собственный класс Point, но сейчас я одержим тем, чтобы заставить работать namedtuple .. Я использую Python 2.7, SQLalchemy 0.6.6 (механизм sqlite)

ПРИМЕР:

Я пытаюсь что-то вроде этого:

from sqlalchemy import *
from sqlalchemy.orm import *
from collections import namedtuple

Point=namedtuple('Point',['x','y'],verbose=True)
p=Point(3,4)


db=create_engine('sqlite:///pointtest.db')
metadata=MetaData()
pointxy=Table('pointxy',metadata,
              Column('no',Integer,primary_key=True),
              Column('x',Integer),
              Column('y',Integer),
              sqlite_autoincrement=True)
metadata.create_all(db)
m=mapper(Point, pointxy)
Session=sessionmaker(bind=db)
session=Session()
f=Point(3,4)

Основная идея состоит в том, что мне нужен именованный набор вещей, который можно легко сохранить в базе данных. Итак, это:

class Bunch:
    __init__ = lambda self, **kw: setattr(self, '__dict__', kw)

не будет работать с sqlalchemy (я думаю). Я могу создать класс Bunch, но я не буду знать заранее, сколько целочисленных значений я хочу сохранить в своей коллекции ... Я установлю его до создания своей базы данных. Надеюсь, я понимаю ..

6
задан user976539 3 October 2011 в 11:52
поделиться