2017-03-01 124 views
0

如何在衝突時使用psycopg2查詢參數? 例如,我有這樣的數據:插入與查詢參數衝突

#This is the data for the insert query 
q_values = {'customer_app_id': '35', 'email': '[email protected]', 'access_counter': 1, 'company_name': 'twitter', 'status': 'start'} 

#This is the data for the on conflict query part 
conflict_values = {'access_counter': +1, 'status': 'check', 'status_info': 'already exist'} 

這是查詢:

insert into access (customer_app_id,email,access_counter,company_name,status) 
values (%s,%s,%s,%s,%s) ON CONFLICT (customer_app_id,email) DO UPDATE SET 
%s,%s,%s RETURNING * 

然後我跑這條線:

q_values = q_values.update(conflict_values) 
cursor.execute(query, q_values) 

首先,如何在所有衝突運行與查詢參數?

其次,我對dict所做的更新並不好,因爲如果它將是重複的鍵,它將合併它們,然後參數的數量將不會等於值的數量。

  • 和access_counter +1 - 衝突我試圖通過1

增加訪問_counter請你能幫忙嗎? 謝謝!

回答

0

當你傳遞值的字典(而不是列表或元組)時,我認爲你需要使用%(name)s佔位符,而不是%s

這意味着您可以爲佔位符提供其他名稱,以免它們在q_values字典中發生衝突。

有關詳細信息,請參閱documentation