Je fonction:Pourquoi sqlalchemy ne fait pas d'insertions dans postgresql?
def set_daily_amount_once(self):
query = Session().query(AccountBalance).order_by(AccountBalance.time_valued).all()
items = [item.__dict__ for item in query]
merchants = [d['merchant_account_id'] for d in items]
unique_merchants = [i for i in Counter(merchants)]
all_merchants_and_generated_dates = []
all_statements = []
all_daily_statement_for_database = []
for i in unique_merchants:
merchant_and_generated_dates = {}
date_start = self.get_ab_trs(i,time.strftime("%Y-%m-%d"))[2]
date_end = time.strftime("%Y-%m-%d")
start = datetime.datetime.strptime(date_start, "%Y-%m-%d")
end = datetime.datetime.strptime(date_end, "%Y-%m-%d")
date_generated = [start + datetime.timedelta(days=x) for x in range(0, (end - start).days+1)]
date_generated = [i.strftime("%Y-%m-%d") for i in date_generated]
merchant_and_generated_dates[i]=date_generated
all_merchants_and_generated_dates.append(merchant_and_generated_dates)
for date in date_generated:
all_statements.append(self.get_ab_trs(i,date)[0])
for statement in all_statements:
daily_statement=DailyAccountAmount(
merchant_account_id=statement['merchant_account_id'],
date=statement['date'],
balance_opened=statement['balance_opened'],
balance_closed=statement['balance_closed'],
debit_amount=statement['debit_amount'],
credit_amount=statement['credit_amount'],
total_amount=statement['total_amount'],
currency=statement['currency']
)
all_daily_statement_for_database.append(daily_statement)
try:
Session().add_all(all_daily_statement_for_database)
Session().commit()
print('Must work!')
except Exception as huston_we_have_problems:
print(huston_we_have_problems)
return all_statements
Probablement, toutes les requêtes SELECT
sont produites, mais dans les journaux, je ne vois pas de INSERT
requêtes. Je n'ai aucune exception, tout le code try
- travail, mais rien ajouté à DB. Quel peut être le problème et comment le résoudre?
Avez-vous l'impression/journalisation essayé la valeur de 'all_daily_statement_for_database' avant d'appeler' add_all() '? Peut-être que c'est une liste vide? – mhawke
@mhawke Non, ce n'est pas une liste vide, je l'imprime et contient des valeurs, et le nouvel objet de ma classe contient les valeurs nécessaires. J'essaie d'ajouter des enregistrements dans 'for', mais cela ne fonctionne pas aussi. – Klimenkomud
Vous (probablement, vous n'avez pas fourni la définition de 'Session') créez 2 sessions différentes. Les instances sont ajoutées au premier, le deuxième commits. Essayez 'session = Session()' et travaillez à partir de là. –