Skip to content
/ CoolDB Public

CoolDB - это модуль для удобного использования баз данных, таких как sqlite3 и aiosqlite - для синхронного и асинхронного взаимодействия с базами данных

License

Notifications You must be signed in to change notification settings

enelfo/CoolDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CoolDB

CoolDB - это модуль для удобного использования баз данных на основе sqlite3 - для синхронного и асинхронного взаимодействия с базами данных.

SyncDataBaseRequests - это надстройка над sqlite3, призванная ускорить работу с базами данных sqlite в синхронном режиме.

Пример синхронного использования
Прелесть синхронного режима функций в том, что мы можем вызывать их, как в синхронном режиме, так и в асинхронном из кроутин, либо блокируя их действие, либо прокидывая их в асинхронный режим, по средствам asyncio.to_thread(). И все таки более предпочтительным будет использовать асинхнонные варианты функций, чтобы попросту экономить мощности.
from CoolDB.SyncDataBaseRequests import RegRequests



def main():
	if RegRequests.get_db(
		dataBase="path/filename",
		table_name="your_table_name",
		columns="(name TEXT, age INTEGER, sex TEXT)"
	) is False:
		return 1

	if RegRequetsts.insert_to_db(
		dataBase="path/filename",
		table_name="your_table_name",
		parameters=["Игорь", 41, "Боевой вертолет СУ-34"]
	) is False:
		return 1

	print(RegRequests.fetch_all(
			dataBase="path/filename",
			table_name="your_table_name"
		))



if __name__ == "__main__":
	main()

AsyncDataBaseRequests - это надстройка над aiosqlite, призванная ускорить работу с базами данных sqlite в асинхронном режиме.

Пример асинхронного использования
При асинхронном режиме все точно также, только функции вызываются из кроутин.
import asyncio
from CoolDB.AsyncDataBaseRequests import RegRequests



async def main():
	if await RegRequests.get_db(
		dataBase="path/filename",
		table_name="your_table_name",
		columns="(name TEXT, age INTEGER, sex TEXT)"
	) is False:
		return 1

	if await RegRequetsts.insert_to_db(
		dataBase="path/filename",
		table_name="your_table_name",
		parameters=["Игорь", 41, "Боевой вертолет СУ-34"]
	) is False:
		return 1

	print(await RegRequests.fetch_all(
			dataBase="path/filename",
			table_name="your_table_name"
		))



if __name__ == "__main__":
	asyncio.run(main())

Разница между синхронном и асинхронным режимами в импортруемых модулях и в том, что в асинхронном режими функции вызываются из кроутин с добавлением ключевого слова await.

Документация

В CoolDB собраны регулярные функции взаимодействия с базами данных и помещены в класс RegRequest модуля SyncDataBaseRequests или AsyncDataBaseRequests и, начиная с версии 0.2, ряд функция был дополнен классом MultiConditionsRequests, далее в документации функции, которые вошли в этот класс будут помечены:

Функция get_db()
Функция get_db() используется для создания таблицы в базе данных, если такой еще не существует. Попутно создает и базу данных, если ее еще не существует.
get_db(dataBase: str, table_name: str, columns: str) -> bool

Функция get_db() принимает три аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. columns - столбцы, с которыми необходимо будет создать базу данных, если она еще не была создана. Должны передаваться в формате строки формата: "(SQL_VARS)".

Пример
parameters = "(name TEXT, age INTEGER, sex TEXT)"

Пример использования:

if RegRequests.get_db(
	dataBase="path/filename",
	table_name="your_table_name",
	columns="(name TEXT, age INTEGER, sex TEXT)"
) is False:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция insert_to_db()
Функция insert_to_db() используется для добавления элементов во все столбцы таблицы. Попутно создает и базу данных, если ее еще не существует.
insert_to_db(dataBase: str, table_name: str, parameters: list) -> bool

Функция insert_to_db() принимает три аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. parameters - параметры, которые необходимо будет поместить в базу данных. Должны передаваться в формате списка из переменных или значений.

Пример использования:

if RegRequests.insert_to_db(
	dataBase="path/filename",
	table_name="your_table_name",
	parameters=[X, Y, N, 42]
) is False:
	return 1
Примечания
insert_to_db() записывает значения во все существующие столбцы, поэтому количество передаваемых параметров, должно быть равным количеству существующих столбцов. В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция insert_to_db_one_par()
Функция insert_to_db_one_par() используется для добавления элемента или элементов в определенный столбец или столбцы таблицы. Попутно создает и базу данных, если ее еще не существует.
insert_to_db_one_par(dataBase: str, table_name: str, column_name: str, parameter: str) -> bool

Функция insert_to_db_one_par() принимает четыре аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. column_name - названия столбца или столбцов, куда необходимо записать значения. Названия столбцов должны передаваться списком из названий в формате строки.

  3. parameter - параметр, который необходимо будет поместить в базу данных или несколько параметров для определенных столбцов. Должны передаваться в формате строки формата "'X', 'Y', 'N'".

Пример использования:

if RegRequests.insert_to_db_one_par(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="forX, forY, forN"
	parameter="'X', 'Y', 'N'"
) is False:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция fetch_all_where()
Функция fetch_all_where() используется для извлечения элементов из всех столбцов всех строк, в которых параметр поиска равен значению параметра поиска - условно, извлечь все столбцы всех строк, где айди=13.
###Для класса ReqRequests###
fetch_all_where(dataBase: str, table_name: str, condition: str, condition_value: str | int) -> list[dict] | None

###Для класса MultiConditionsRequests###
fetch_all_where(dataBase: str, table_name: str, condition: list, condition_value: list) -> list[dict] | None

Функция fetch_all_where() принимает четыре аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. condition - параметер, по которому будет производится поиск в таблице.

  3. condition_value - значение параметра, по которому будет производится поиск в таблице.

Пример использования:

###Для класса ReqRequests###
if RegRequests.fetch_all_where(
	dataBase="path/filename",
	table_name="your_table_name",
	condition="id_",
	condition_value="121212"
) is None:
	return 1

###Для класса MultiConditionsRequests###
if MultiConditionsRequests.fetch_all_where(
	dataBase="path/filename",
	table_name="your_table_name",
	condition=[
		"id_",
		"time"
	],
	condition_value=[
		"121212",
		"145353"
	]
) is None:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция fetch_all()
Функция fetch_all() используется для извлечения всех элементов таблицы.
fetch_all(dataBase: str, table_name: str) -> list[dict] | None

Функция fetch_all() принимает два аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

Пример использования:

if RegRequests.fetch_all(
	dataBase="path/filename",
	table_name="your_table_name"
) is None:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция fetch_one()
Функция fetch_one() используется для извлечения одного элемента таблицы.
###Для класса ReqRequests###
fetch_one(dataBase: str, table_name: str, column_name: str, condition: str, condition_value: str | int) -> Any | None

###Для класса MultiConditionsRequests###
fetch_one(dataBase: str, table_name: str, column_name: str, condition: list, condition_value: list) -> Any | None

Функция fetch_one() принимает пять аргументов:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. column_name - названия столбца, откуда необходимо извлечь значение.

  3. condition - параметер, по которому будет производится поиск в таблице.

  4. condition_value - значение параметра, по которому будет производится поиск в таблице.

Пример использования:

###Для класса ReqRequests###
if RegRequests.fetch_one(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="XYN",
	condition="id_",
	condition_value="121212"
) is None:
	return 1

###Для класса MultiConditionsRequests###
if MultiConditionsRequests.fetch_one(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="XYN",
	condition=[
		"id_",
		"time"
	],
	condition_value=[
		"121212",
		"145353"
	]
) is None:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция fetch_one_column()
Функция fetch_one_column() используется для извлечения всех элементов одного столбца таблицы.
###Для класса ReqRequests###
fetch_one_column(dataBase: str, table_name: str, column_name: str, condition: str, condition_value: str | int) -> tuple | None


###Для класса MultiConditionsRequests###
fetch_one_column(dataBase: str, table_name: str, column_name: str, condition: list, condition_value: list) -> tuple | None

Функция fetch_one_column() принимает пять аргументов:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. column_name - названия столбца, откуда необходимо извлечь значение.

  3. condition - параметер, по которому будет производится поиск в таблице.

  4. condition_value - значение параметра, по которому будет производится поиск в таблице.

Пример использования:

###Для класса ReqRequests###
if RegRequests.fetch_one(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="XYN",
	condition="id_",
	condition_value="121212"
) is None:
	return 1

###Для класса MultiConditionsRequests###
if MultiConditionsRequests.fetch_one(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="XYN",
	condition=[
		"id_",
		"time"
	],
	condition_value=[
		"121212",
		"145353"
	]
) is None:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция exists_test()
Функция exists_test() используется для проверки существования таблицы.
exists_test(dataBase: str, table_name: str) -> bool

Функция exists_test() принимает два аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

Пример использования:

if RegRequests.exists_test(
	dataBase="path/filename",
	table_name="your_table_name"
) is False:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция update_table()
Функция update_table() используется для обновления определенного элемента определенного столбца.
###Для класса ReqRequests###
update_table(dataBase: str, table_name: str, column_name: str, new_meaning: str | int, condition: str, condition_value: str | int) -> bool

###Для класса MultiConditionsRequests###
update_table(dataBase: str, table_name: str, column_name: str, new_meaning: str | int, condition: list, condition_value: list) -> bool

Функция update_table() принимает шесть аргументов:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. column_name - названия столбца, откуда необходимо извлечь значение.

  3. new_meaning - новое значение выбранного столбца

  4. condition - параметер, по которому будет производится поиск в таблице.

  5. condition_value - значение параметра, по которому будет производится поиск в таблице.

Пример использования:

###Для класса ReqRequests###
if RegRequests.update_table(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="XYN",
	new_meaning="URAURAURAURAURA"
	condition="id_",
	condition_value="121212"
) is False:
	return 1

###Для класса MultiConditionsRequests###
if MultiConditionsRequests.update_table(
	dataBase="path/filename",
	table_name="your_table_name",
	column_name="XYN",
	new_meaning="URAURAURAURAURA"
	condition=[
		"id_",
		"time"
	],
	condition_value=[
		"121212",
		"145353"
	]
) is False:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция delete_from_table()
Функция delete_from_table() используется для удаления строки, в столбце которой есть совпадения с условием.
###Для класса ReqRequests###
delete_from_table(dataBase: str, table_name: str, condition: str, condition_value: str | int) -> bool

###Для класса MultiConditionsRequests###
delete_from_table(dataBase: str, table_name: str, condition: list, condition_value: list) -> bool

Функция delete_from_table() принимает четыре аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

  2. condition - параметер, по которому будет производится поиск в таблице.

  3. condition_value - значение параметра, по которому будет производится поиск в таблице.

Пример использования:

###Для класса ReqRequests###
if RegRequests.delete_from_table(
	dataBase="path/filename",
	table_name="your_table_name",
	condition="id_",
	condition_value="121212"
) is False:
	return 1

###Для класса MultiConditionsRequests###
if MultiConditionsRequests.delete_from_table(
	dataBase="path/filename",
	table_name="your_table_name",
	condition=[
		"id_",
		"time"
	],
	condition_value=[
		"121212",
		"145353"
	]
) is False:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

Функция delete_table()
Функция delete_table() используется для удаления всех таблицы избазы данных.
delete_table(dataBase: str, table_name: str) -> bool

Функция delete_table() принимает два аргумента:

  1. dataBase - путь до файла базы данных. Должен передаваться в формате строки формата: "path/filename".
Примечания
Предпочтительно хранить файл базы данных не глубже одной поддиректории от main файла
  1. table_name - название таблицы в базе данных. Должен передаваться в формате строки.

Пример использования:

if RegRequests.delete_table(
	dataBase="path/filename",
	table_name="your_table_name"
) is False:
	return 1
Примечания
В асинхронном режиме должна вызываться из кроутины и должно присутствовать ключевое слово await.

About

CoolDB - это модуль для удобного использования баз данных, таких как sqlite3 и aiosqlite - для синхронного и асинхронного взаимодействия с базами данных

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages