-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsql_create.py
91 lines (72 loc) · 3.47 KB
/
sql_create.py
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
80
81
82
83
84
85
86
87
88
89
90
91
import sqlite3
from defs.gradusPlanets import calc as gp
from datetime import date, timedelta
from time import perf_counter
def calc_velo(_natal, _natal_next):
# расчет смещения планеты за день / учитываем ☿ ♀ ♂ ♃
_tmp = []
for i in range(2, 6, 1):
if _natal_next[i] - _natal[i] < 0 and abs(_natal_next[i] - _natal[i]) > 350:
_tmp.append(round((_natal_next[i] - _natal[i] + 360), 3))
elif _natal_next[i] - _natal[i] < 0 and abs(_natal_next[i] - _natal[i]) < 350:
_tmp.append(round((_natal_next[i] - _natal[i]), 3))
else:
_tmp.append(round((_natal_next[i] - _natal[i]), 3))
return _tmp
def main(start_year, start_month, start_day,
last_year, last_month, last_day):
date_start = date(start_year, start_month, start_day)
date_end = date(last_year, last_month, last_day)
try:
conn = sqlite3.connect('db/ephem.db')
cur = conn.cursor()
print("База данных подключена к SQLite")
# очистка таблиц
cur.execute(''' drop table if exists tab_0 ''')
cur.execute(''' drop table if exists tab_final ''')
# print("Предварительная очистка")
create_tab_0 = ''' create table if not exists tab_0 (
data text not null, sun real not null,
moon real not null, mercury real not null,
venus real not null, mars real not null,
jupiter real not null, saturn real not null,
uranus real not null, neptune real not null,
pluto real not null, step_mercury real not null,
step_venus real not null, step_mars real not null,
step_jupiter real not null
);
'''
create_tab_final = ''' create table if not exists tab_final (
data text, sun real, moon real, mercury real, venus real,
mars real,jupiter real, saturn real, uranus real,
neptune real, pluto real
);
'''
cur.execute(create_tab_0)
cur.execute(create_tab_final)
# предварительная очистка клиентской таблицы или если надо частями заполнять таблицу
# только меняем даты выборки
cur.execute("delete from tab_0")
cur.execute("delete from tab_final")
while date_start <= date_end:
date_next = date_start + timedelta(days=1)
_natal_next = [round(i, 3) for i in gp(date_next.year, date_next.month, date_next.day,
0, 0, 0, 0.0, 0.0)]
_natal = [round(i, 3) for i in gp(date_start.year, date_start.month, date_start.day,
0, 0, 0, 0.0, 0.0)]
_step = calc_velo(_natal, _natal_next)
dz = tuple([str(date_start)] + _natal + _step)
cur.execute(f"insert into tab_0 values {dz}")
print(date_start) # видеть лог
date_start += timedelta(days=1)
conn.commit()
cur.execute("vacuum")
cur.close()
except sqlite3.Error as error:
print("Ошибка при подключении к sqlite", error)
finally:
if (conn):
conn.close()
print("Соединение с SQLite закрыто")
main(start_year=1900, start_month=1, start_day=1,
last_year=2050, last_month=1, last_day=1)