11import os
22import 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
169
1710class __func__ :
1811 def to_sqltype (tp : Any , primary : bool = False ) -> str :
@@ -26,19 +19,21 @@ def to_sqltype(tp: Any, primary: bool=False) -> str:
2619 return "BOOLEAN"
2720 elif tp == bytes :
2821 return "BLOB"
22+ elif tp is None :
23+ return "NULL"
2924 else :
3025 raise TypeError ("This type of data is not supported" )
3126
3227 def to_pythontype (tp : str ) -> Any :
33- if tp .upper () in __types__ .INTEGER :
28+ if tp .upper () in Units .INTEGER :
3429 return int
35- elif tp .upper () in __types__ .FLOAT :
30+ elif tp .upper () in Units .FLOAT :
3631 return float
37- elif tp .upper () in __types__ .STRING :
32+ elif tp .upper () in Units .STRING :
3833 return str
39- elif tp .upper () in __types__ .BOOLEAN :
34+ elif tp .upper () in Units .BOOLEAN :
4035 return bool
41- elif tp .upper () in __types__ .BYTES :
36+ elif tp .upper () in Units .BYTES :
4237 return bytes
4338 else :
4439 return None
@@ -59,8 +54,8 @@ def request(
5954 self ,
6055 request_text : str ,
6156 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 ]]:
6459 """`Функция для запросов` к базе данных SQLite"""
6560 mode = mode or "a"
6661 if params is None :
@@ -83,7 +78,7 @@ def request(
8378 def create_table (
8479 self ,
8580 table_name : str ,
86- colons : dict [str , tuple [Any , bool ]]
81+ colons : Dict [str , Tuple [Any , bool ]]
8782 ) -> None :
8883 """`Создание таблицы`, ЕСЛИ ЕЁ НЕТУ в базе данных SQLite"""
8984 colons_list = []
@@ -93,7 +88,7 @@ def create_table(
9388 )
9489 self .request ("CREATE TABLE IF NOT EXISTS \" {0}\" ({1});" .format (table_name , ", " .join (colons_list )), "w" )
9590
96- def get_tables_list (self ) -> Union [ list [ str ], list ]:
91+ def get_tables_list (self ) -> List [ str ]:
9792 """`Список таблиц` в базе данных SQLite"""
9893 tables_info , tables_list = self .request ("SELECT * FROM sqlite_master WHERE type = 'table';" , "r" ), []
9994 for i in tables_info :
@@ -107,7 +102,7 @@ def delete_table(self, table_name: str) -> None:
107102 def get_colons_list (
108103 self ,
109104 table_name : str
110- ) -> Union [ list [ dict [ str , Any ]], list ]:
105+ ) -> List [ Dict [ str , Any ]]:
111106 """`Возвращает список с информацией о колонках` в таблице базе данных SQLite"""
112107 colons , colons_list = self .request (f"PRAGMA table_info(\" { table_name } \" );" , "r" ), []
113108 for i in colons :
@@ -125,7 +120,7 @@ def get_colons_list(
125120 def get_colons_names (
126121 self ,
127122 table_name : str
128- ) -> Union [ list [ str ], list ]:
123+ ) -> List [ str ]:
129124 """`Возвращает список с именами колонок` в таблице базе данных SQLite"""
130125 return [i ["name" ] for i in self .get_colons_list (table_name )]
131126
@@ -158,7 +153,7 @@ def get_data(
158153 table_name : str ,
159154 colon_name : str ,
160155 value : Any
161- ) -> Union [ list [ tuple [ Any ]], list ]:
156+ ) -> List [ Tuple [ Any ]]:
162157 """`Возращает данные из таблицы` базы данных SQLite"""
163158 return self .request ("SELECT * FROM {0} WHERE {1} = ?;" .format (table_name , colon_name ), "r" , [value ])
164159
@@ -175,7 +170,7 @@ def exists_data(
175170 table_name : str ,
176171 colon_name : str ,
177172 value : Any
178- ) -> Union [tuple [Literal [False ], None ], tuple [Literal [True ], list ]]:
173+ ) -> Union [Tuple [Literal [False ], None ], Tuple [Literal [True ], list ]]:
179174 """`Проверяет наличия данных в таблице` базе данных SQLite"""
180175 data = self .request (f"SELECT * FROM \" { table_name } \" WHERE \" { colon_name } \" = ?;" , "r" , [value ])
181176 anwer = (len (data ) != 0 )
@@ -186,7 +181,7 @@ def update_data(
186181 table_name : str ,
187182 colon_name : str ,
188183 value : Any ,
189- new_value : dict [str , Any ]
184+ new_value : Dict [str , Any ]
190185 ) -> None :
191186 """`Обновляет данные в таблице` базе данных SQLite"""
192187 invalue = list (new_value .items ())
0 commit comments