मैं एक वर्ग मिल गया है:SQLAlchemy अद्यतन करता है, तो अद्वितीय कुंजी मौजूद है
class Tag(Base, TimestampMixin):
"""Tags"""
__tablename__ = 'tags'
__table_args__ = {'mysql_engine' : 'InnoDB', 'mysql_charset' : 'utf8' }
id = Column(Integer(11), autoincrement = True, primary_key = True)
tag = Column(String(32), nullable = False, unique = True)
cnt = Column(Integer(11), index = True, nullable = False, default = 1)
def __init__(self, tag):
t = session.query(Tag).filter_by(tag=tag).first()
if t:
self.cnt = t.cnt+1
self.tag = t.tag
else:
self.tag = tag
def __repr__(self):
return "<Tag('%s')>" % (self.tag,)
def __unicode__(self):
return "%s" % (self.tag,)
टैग जोड़ते:
tag = Tag('tag')
session.add(tag)
session.commit()
मैं इसे मौजूदा tag
अपडेट करना चाहते हैं। - संभवतः मुझे बन्दूक सर्जरी के बाहर रखता है
tag = session.query(Tag).filter_by(tag='tag').first()
if tag:
tag.cnt++
else:
tag = Tag('tag')
session.add(tag)
session.commit()
लेकिन, Tag
कक्षा में इस तरह के तर्क रखते हुए और अधिक स्पष्ट हो रहा है:
, मैं ऐसा करने के बाद हो सकता है।
मैं वहां कैसे जा सकता हूं? मैं Python
और SQLAlchemy
पर बहुत नया हूं, इसलिए मेरे कोड पर किसी भी अतिरिक्त विचार की सराहना की जाएगी।
धन्यवाद।
पीएस SQLAlchemy
SO GIGANTIC है और वे INSERT ... ON DUPLICATE KEY UPDATE
करने के लिए एक आसान तरीका प्रदान नहीं करते हैं, हुह? वाह!
कोशिश session.me session.add (टैग) के बजाय rge (टैग) –