recherche

Maison  >  Questions et réponses  >  le corps du texte

python - Données insérées par lots sqlalchemy, les colonnes de données ne sont pas égales

# 初始化数据库连接:
engine = create_engine("xxxxx")
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)
session = DBSession()
# 测试没有问题的数据
rows_ok = [
    {"name":"aaa","otherdata":"exist_col_aaa"},
    {"name":"bbb","otherdata":"exist_col"},
]
# 测试出问题的数据
rows = [
    {"name":"aaa"},
    {"name":"bbb","otherdata":"exist_col"},
]
# User中有name,otherdata字段
session.execute(User.__table__.insert(),rows)
session.commit()
session.close()

Si les clés de tous les dictionnaires dans les données d'insertion par lots sont cohérentes, les données peuvent être enregistrées

Tant qu'une clé manque dans le dictionnaire dans la Liste, la colonne entière sera ignorée

La situation réelle comporte beaucoup de colonnes et beaucoup de données manquantes. Existe-t-il une solution ou d'autres méthodes ?

ou va

rows = [
    {"name":"aaa"},
    {"name":"aaa"},
    {"name":"aaa"},
    {"name":"aaa"},
    {"name":"bbb","otherdata":"exist_col",....},
]

Convertir en

rows = [
    {"name":"aaa","otherdata":"",....},
    {"name":"aaa","otherdata":"",....},
    {"name":"aaa","otherdata":"",....},
    {"name":"aaa","otherdata":"",....},
    {"name":"bbb","otherdata":"exist_col",....},
]
伊谢尔伦伊谢尔伦2725 Il y a quelques jours943

répondre à tous(1)je répondrai

  • 習慣沉默

    習慣沉默2017-06-14 10:54:50

      Lors de la définition du
    1. schéma, utilisez nullable=False

    2. Utilisez session.add_all

    répondre
    0
  • Annulerrépondre