问题描述
我想使用具有选择性列作为键及其值的字典的python列表在表上执行bulk_update_mappings。
这是表类和字典的python列表。
class KpcComputation(BASE):
"""KpcComputation model class"""
__tablename__ = 'kpc_computation_v2'
__table_args__ = {'useexisting': True}
kc_rs_id = Column('kc_rs_id',Integer,ForeignKey("review_sentences_v2.rs_id"))
kc_kpc_id = Column('kc_kpc_id',ForeignKey("kpc_v2.kpc_id"))
kc_kpc_score = Column('kc_kpc_score',Float)
kc_sentiment = Column('kc_sentiment',String)
kc_sentiment_score = Column('kc_sentiment_score',Float)
kc_last_updated_date_time = Column(
DateTime,onupdate=datetime.datetime.now,default=datetime.datetime.now
)
__mapper_args__ = {
'primary_key': [kc_rs_id,kc_kpc_id]}
dict_data = [{'kc_rs_id': 1194773,'kc_sentiment': 'neutral','kc_sentiment_score': 2.0},{'kc_rs_id': 1194774,'kc_sentiment': 'positive','kc_sentiment_score': 3.0},{'kc_rs_id': 1550643,'kc_sentiment': 'negative','kc_sentiment_score': 1.0}]
仅在表和字典的python列表之间的kc_rs_id匹配的地方,更新操作才必须在kc_sentiment和kc_sentiment_score上进行。我尝试了以下方法进行更新,
self.session.bulk_update_mappings(KpcComputation,dict_data)
self.session.commit()
我的理解是,只要kc_rs_id匹配,上面的语句就会用新值更新行。但是我觉得我缺少什么。
我试图找到在特定列上执行批量更新的方法,但是一些答案建议为所有列使用值(用一些默认值填充不是最奇怪的列),这不是我想要的。我是SQLAlchemy的新手,所以无法弄清楚该如何实现。有没有更好的方法可以做到这一点?任何建议表示赞赏。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)