Update app.py
Browse files
app.py
CHANGED
|
@@ -710,6 +710,10 @@ def update_or_insert_user(db_name, user_data, mapping_template):
|
|
| 710 |
conn = sqlite3.connect(db_name)
|
| 711 |
cursor = conn.cursor()
|
| 712 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 713 |
# Преобразование данных пользователя на основе шаблона сопоставления
|
| 714 |
transformed_data = {}
|
| 715 |
for json_key, db_column in mapping_template.items():
|
|
@@ -728,10 +732,10 @@ def update_or_insert_user(db_name, user_data, mapping_template):
|
|
| 728 |
|
| 729 |
# Заполнение обязательных полей значениями по умолчанию
|
| 730 |
required_fields = [
|
| 731 |
-
"vk_id", "chat_id", "ws_st", "ws_stop", "web_st", "fin_prog",
|
| 732 |
-
"b_city", "b_fin", "b_ban", "b_ign", "b_baners", "b_butt", "b_mess",
|
| 733 |
-
"
|
| 734 |
-
"
|
| 735 |
]
|
| 736 |
for field in required_fields:
|
| 737 |
if field not in transformed_data:
|
|
@@ -754,17 +758,18 @@ def update_or_insert_user(db_name, user_data, mapping_template):
|
|
| 754 |
update_query = "UPDATE contacts SET "
|
| 755 |
update_values = []
|
| 756 |
for column, value in transformed_data.items():
|
| 757 |
-
|
| 758 |
-
|
|
|
|
| 759 |
update_query = update_query.rstrip(", ") + " WHERE email = ?"
|
| 760 |
update_values.append(email)
|
| 761 |
logging.debug(f"Update query: {update_query} with values: {update_values}")
|
| 762 |
cursor.execute(update_query, update_values)
|
| 763 |
else:
|
| 764 |
-
|
| 765 |
-
placeholders = ', '.join('?' for _ in
|
| 766 |
-
insert_query = f"INSERT INTO contacts ({
|
| 767 |
-
insert_values =
|
| 768 |
logging.debug(f"Insert query: {insert_query} with values: {insert_values}")
|
| 769 |
cursor.execute(insert_query, insert_values)
|
| 770 |
|
|
|
|
| 710 |
conn = sqlite3.connect(db_name)
|
| 711 |
cursor = conn.cursor()
|
| 712 |
|
| 713 |
+
# Получение списка столбцов из таблицы
|
| 714 |
+
cursor.execute("PRAGMA table_info(contacts)")
|
| 715 |
+
columns = [column[1] for column in cursor.fetchall()]
|
| 716 |
+
|
| 717 |
# Преобразование данных пользователя на основе шаблона сопоставления
|
| 718 |
transformed_data = {}
|
| 719 |
for json_key, db_column in mapping_template.items():
|
|
|
|
| 732 |
|
| 733 |
# Заполнение обязательных полей значениями по умолчанию
|
| 734 |
required_fields = [
|
| 735 |
+
"id", "name", "phone", "email", "vk_id", "chat_id", "ws_st", "ws_stop", "web_st", "fin_prog",
|
| 736 |
+
"b_city", "b_fin", "b_ban", "b_ign", "b_baners", "b_butt", "b_mess", "shop_st", "curator",
|
| 737 |
+
"pr1", "pr2", "pr3", "pr4", "pr5", "gc_url", "key_pr", "n_con", "canal", "data_on", "data_t",
|
| 738 |
+
"utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content", "gcpc"
|
| 739 |
]
|
| 740 |
for field in required_fields:
|
| 741 |
if field not in transformed_data:
|
|
|
|
| 758 |
update_query = "UPDATE contacts SET "
|
| 759 |
update_values = []
|
| 760 |
for column, value in transformed_data.items():
|
| 761 |
+
if column in columns:
|
| 762 |
+
update_query += f"{column} = ?, "
|
| 763 |
+
update_values.append(value)
|
| 764 |
update_query = update_query.rstrip(", ") + " WHERE email = ?"
|
| 765 |
update_values.append(email)
|
| 766 |
logging.debug(f"Update query: {update_query} with values: {update_values}")
|
| 767 |
cursor.execute(update_query, update_values)
|
| 768 |
else:
|
| 769 |
+
insert_columns = [column for column in transformed_data.keys() if column in columns]
|
| 770 |
+
placeholders = ', '.join('?' for _ in insert_columns)
|
| 771 |
+
insert_query = f"INSERT INTO contacts ({', '.join(insert_columns)}) VALUES ({placeholders})"
|
| 772 |
+
insert_values = [transformed_data[column] for column in insert_columns]
|
| 773 |
logging.debug(f"Insert query: {insert_query} with values: {insert_values}")
|
| 774 |
cursor.execute(insert_query, insert_values)
|
| 775 |
|