1
1
import os
2
2
import sqlite3
3
- from typing import Any , Union , Iterable , Literal , Optional
4
-
5
- class __info__ :
6
- name = "SQLite3Worker"
7
- version = ("0.9-beta" , 0.9 )
8
- authors = ("Роман Слабицкий" ,)
9
-
10
- class __types__ :
11
- INTEGER = ["INTEGER" , "INT" , "TINYINT" , "SMALLINT" , "MEDIUMINT" , "BIGINT" , "UNSIGNED BIG INT" , "INT2" , "INT8" ]
12
- FLOAT = ["REAL" , "DOUBLE" , "DOUBLE PRECISION" , "FLOATNONE" ]
13
- STRING = ["TEXT" , "CHARACTER(20)" , "VARCHAR(255)" , "VARYING CHARACTER(255)" , "NCHAR(55)" , "NATIVE CHARACTER(70)" , "NVARCHAR(100)" , "CLOB" ]
14
- BOOLEAN = ["BOOLEAN" ]
15
- BYTES = ["BLOB" ]
3
+ from typing import Any , Union , Iterable , Literal , Optional , List , Tuple , Dict
4
+ # ! Локальные импорты
5
+ try :
6
+ import Units
7
+ except :
8
+ from . import Units
16
9
17
10
class __func__ :
18
11
def to_sqltype (tp : Any , primary : bool = False ) -> str :
@@ -26,19 +19,21 @@ def to_sqltype(tp: Any, primary: bool=False) -> str:
26
19
return "BOOLEAN"
27
20
elif tp == bytes :
28
21
return "BLOB"
22
+ elif tp is None :
23
+ return "NULL"
29
24
else :
30
25
raise TypeError ("This type of data is not supported" )
31
26
32
27
def to_pythontype (tp : str ) -> Any :
33
- if tp .upper () in __types__ .INTEGER :
28
+ if tp .upper () in Units .INTEGER :
34
29
return int
35
- elif tp .upper () in __types__ .FLOAT :
30
+ elif tp .upper () in Units .FLOAT :
36
31
return float
37
- elif tp .upper () in __types__ .STRING :
32
+ elif tp .upper () in Units .STRING :
38
33
return str
39
- elif tp .upper () in __types__ .BOOLEAN :
34
+ elif tp .upper () in Units .BOOLEAN :
40
35
return bool
41
- elif tp .upper () in __types__ .BYTES :
36
+ elif tp .upper () in Units .BYTES :
42
37
return bytes
43
38
else :
44
39
return None
@@ -59,8 +54,8 @@ def request(
59
54
self ,
60
55
request_text : str ,
61
56
mode : Optional [Literal ["a" , "r" , "w" ]]= None ,
62
- params : Optional [list [Any ]]= None
63
- ) -> Union [ None , list , list [ list ]]:
57
+ params : Optional [Iterable [Any ]]= None
58
+ ) -> Optional [ List [ Tuple ]]:
64
59
"""`Функция для запросов` к базе данных SQLite"""
65
60
mode = mode or "a"
66
61
if params is None :
@@ -83,7 +78,7 @@ def request(
83
78
def create_table (
84
79
self ,
85
80
table_name : str ,
86
- colons : dict [str , tuple [Any , bool ]]
81
+ colons : Dict [str , Tuple [Any , bool ]]
87
82
) -> None :
88
83
"""`Создание таблицы`, ЕСЛИ ЕЁ НЕТУ в базе данных SQLite"""
89
84
colons_list = []
@@ -93,7 +88,7 @@ def create_table(
93
88
)
94
89
self .request ("CREATE TABLE IF NOT EXISTS \" {0}\" ({1});" .format (table_name , ", " .join (colons_list )), "w" )
95
90
96
- def get_tables_list (self ) -> Union [ list [ str ], list ]:
91
+ def get_tables_list (self ) -> List [ str ]:
97
92
"""`Список таблиц` в базе данных SQLite"""
98
93
tables_info , tables_list = self .request ("SELECT * FROM sqlite_master WHERE type = 'table';" , "r" ), []
99
94
for i in tables_info :
@@ -107,7 +102,7 @@ def delete_table(self, table_name: str) -> None:
107
102
def get_colons_list (
108
103
self ,
109
104
table_name : str
110
- ) -> Union [ list [ dict [ str , Any ]], list ]:
105
+ ) -> List [ Dict [ str , Any ]]:
111
106
"""`Возвращает список с информацией о колонках` в таблице базе данных SQLite"""
112
107
colons , colons_list = self .request (f"PRAGMA table_info(\" { table_name } \" );" , "r" ), []
113
108
for i in colons :
@@ -125,7 +120,7 @@ def get_colons_list(
125
120
def get_colons_names (
126
121
self ,
127
122
table_name : str
128
- ) -> Union [ list [ str ], list ]:
123
+ ) -> List [ str ]:
129
124
"""`Возвращает список с именами колонок` в таблице базе данных SQLite"""
130
125
return [i ["name" ] for i in self .get_colons_list (table_name )]
131
126
@@ -158,7 +153,7 @@ def get_data(
158
153
table_name : str ,
159
154
colon_name : str ,
160
155
value : Any
161
- ) -> Union [ list [ tuple [ Any ]], list ]:
156
+ ) -> List [ Tuple [ Any ]]:
162
157
"""`Возращает данные из таблицы` базы данных SQLite"""
163
158
return self .request ("SELECT * FROM {0} WHERE {1} = ?;" .format (table_name , colon_name ), "r" , [value ])
164
159
@@ -175,7 +170,7 @@ def exists_data(
175
170
table_name : str ,
176
171
colon_name : str ,
177
172
value : Any
178
- ) -> Union [tuple [Literal [False ], None ], tuple [Literal [True ], list ]]:
173
+ ) -> Union [Tuple [Literal [False ], None ], Tuple [Literal [True ], list ]]:
179
174
"""`Проверяет наличия данных в таблице` базе данных SQLite"""
180
175
data = self .request (f"SELECT * FROM \" { table_name } \" WHERE \" { colon_name } \" = ?;" , "r" , [value ])
181
176
anwer = (len (data ) != 0 )
@@ -186,7 +181,7 @@ def update_data(
186
181
table_name : str ,
187
182
colon_name : str ,
188
183
value : Any ,
189
- new_value : dict [str , Any ]
184
+ new_value : Dict [str , Any ]
190
185
) -> None :
191
186
"""`Обновляет данные в таблице` базе данных SQLite"""
192
187
invalue = list (new_value .items ())
0 commit comments