我想檢查數據庫中的不同值,並創建一個新的值,所以我需要查詢,我不知道如果我必須在我的創建會話SQLAlchemy類,或者我該怎麼做呢?使用會議像全球?,我沒有在文檔中找到。如何使用會話,而不必通過它[SqlAlchemy]
事端這樣的:
class MyClass(Base):
__tablename__ = 'my_class'
__table_args__ = (UniqueConstraint('key', 'key2'),
{}
)
id = Column(Integer, Sequence('my_class_id'), primary_key=True)
key = Column(String(30), nullable= False) #unique together key2
key2 = Column(String(30), nullable = False)
value = Column(Integer, nullable=False)
def __init__(self, key, key2):
#check if exist key and key2
values = session.query(MyClass.value).filter(MyClass.key == self.key).\
filter(MyClass.key2 == self)
if values:
raise IntegrityError
#get biggest value
value = session.query(MyClass.value).filter(MyClass.key = self.key).order_by(asc(MyClass.value)) #I'm not shure if i need 'asc'
#no value new key and key2
if not value:
self.key = key
self.key2 = key2
self.value = '000'
return
#i used a single table beacuse is easier to understand
#in this example
self.key = key
self.key2 = key
self.value = increment(value.first())
我使用SQLAlchemy的6.2和聲明
感謝
這是不是更好地處理數據庫中,使用唯一索引? – codeape 2010-07-05 20:10:44
它會更容易,但任何我想學習如何做的方式,但我看到,這不像django DRM那麼容易,任何方式,我不能在__init__上做,因爲它必須綁定到某些會話 – sacabuche 2010-07-05 21:52:22
無論如何,值將被用於很多,它必須是緊湊的,這就是因爲我使用一個字符串做'1Za'這樣的事情 – sacabuche 2010-07-05 21:55:22