-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmigrate_osn.py
More file actions
79 lines (62 loc) · 2.96 KB
/
Copy pathmigrate_osn.py
File metadata and controls
79 lines (62 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import sqlite3
import json
import os
OLD_DB = "osn.db"
NEW_DB = "gsmarbot.db"
def migrate_users_from_sql():
if not os.path.exists(OLD_DB):
print(f"❌ Файл {OLD_DB} не найден!")
return
print(f"🔄 Подключаемся к {OLD_DB}...")
# Подключение к старой БД
try:
conn_old = sqlite3.connect(OLD_DB)
cursor_old = conn_old.cursor()
# Получаем список колонок, чтобы понять структуру
cursor_old.execute("PRAGMA table_info(profiles)")
columns = [info[1] for info in cursor_old.fetchall()]
print(f"ℹ️ Структура старой таблицы: {columns}")
# Читаем всех пользователей
# Обычно первый столбец id (user_id), остальные - настройки
cursor_old.execute("SELECT * FROM profiles")
rows = cursor_old.fetchall()
print(f"👤 Найдено пользователей: {len(rows)}")
except Exception as e:
print(f"❌ Ошибка чтения старой БД: {e}")
return
# Подключение к новой БД
conn_new = sqlite3.connect(NEW_DB)
cursor_new = conn_new.cursor()
# Убедимся, что таблица готова
cursor_new.execute('''
CREATE TABLE IF NOT EXISTS user_settings (
user_id INTEGER PRIMARY KEY,
settings TEXT
)
''')
count = 0
for row in rows:
try:
user_id = row[0] # Первый элемент обычно ID
# Остальные элементы собираем в список настроек
# В старой схеме настройки лежали колонками, в новой - мы храним их как JSON-список
# чтобы не привязываться к жесткой схеме
settings_list = list(row[1:])
# Стандартизация: если в старой базе было меньше настроек, дополним дефолтными
# Ожидаем ~10 настроек [eeg, state, ?, desktop, turbo, news, plus, create_state, lang, fuzz]
while len(settings_list) < 10:
settings_list.append(0) # Заполняем нулями/None по необходимости
settings_json = json.dumps(settings_list)
cursor_new.execute('''
INSERT OR REPLACE INTO user_settings (user_id, settings)
VALUES (?, ?)
''', (user_id, settings_json))
count += 1
except Exception as e:
print(f"Ошибка с юзером {row[0]}: {e}")
conn_new.commit()
conn_new.close()
conn_old.close()
print(f"✅ Успешно перенесено пользователей: {count}")
if __name__ == "__main__":
migrate_users_from_sql()