'u kullanarak MySQL'in son eklenen değerini aldım. Sadece oldukça sıkıntılarla karşılaştığım bir problemle karşılaştım ve test ettikten sonra mevcut cevapların NONE olduğunu yeterli buldum.SQLAlchemy
Çeşitli önerileri gördüm ancak hiçbiri MySQL'de bir auto_increment alanı için son eklenen değeri döndüremiyor gibi görünüyor.
Kaydı eklemek ve daha sonra kimliği almak için session.flush() kullanımından bahseden örnekleri gördüm. Ancak her zaman ben de session.refresh (kullanılmasından söz örneklerini gördük 0.
dönmek görünüyor) ama bu şu hatayı yükseltir: InvalidRequestError: örneğini '' Ben ne
yenilemek Could yapmaya çalışmak çılgınca basit görünüyor ama sırrı anlayamıyorum.
Bildiri yaklaşımını kullanıyorum. Nesne f DB itti edilmiştir ve otomatik olarak benzersiz bir birincil anahtar kimliği atanmıştır Bu noktada
class Foo(Base):
__tablename__ = 'tblfoo'
__table_args__ = {'mysql_engine':'InnoDB'}
ModelID = Column(INTEGER(unsigned=True), default=0, primary_key=True, autoincrement=True)
ModelName = Column(Unicode(255), nullable=True, index=True)
ModelMemo = Column(Unicode(255), nullable=True)
f = Foo(ModelName='Bar', ModelMemo='Foo')
session.add(f)
session.flush()
:
Yani, benim kod şöyle görünür. Ancak, bazı ek işlemlerde kullanılacak değeri elde etmenin bir yolunu bulamıyorum. Ben aşağıdakileri yapmak istiyorum:
my_new_id = f.ModelID
Ben sadece diğer parametrelere dayalı ModelID arama için başka bir sorgu yürütebilir ama değil eğer mümkünse tercih edeceğini biliyorum.
Bu sorunun çözümüne yönelik herhangi bir kavrayışı çok takdir ediyorum.
Yardımlarınız için şimdiden teşekkür ederiz.
Güzel yakalama, varsayılan = 0 fark etmedi. –
Sunucu günlüğü her zaman sorunu bulmak için çalışacaktır :) – Nilesh
Ugh ... evet, güzel yakalama. Kafam, tabloyu oluştururken birincil anahtar alan için varsayılan bir değerin gerekli olduğu SQL dünyasındaydı. Bulduğun için teşekkürler. – PlaidFan