使用python字典列表批量更新表中特定列不是全部

问题描述

我想使用具有选择性列作为键及其值的字典的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 (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...