Работа с базой данных SQLite в Python: примеры использования


Python и SQLite: основные операции с базой данных в Python. Creat, insert, select, update и delete.
Базы данных - важная часть многих программных проектов, и Python предоставляет широкие возможности для работы с ними. Одним из популярных инструментов является SQLite, который представляет собой лёгкую и быструю систему управления базами данных. В этой статье мы рассмотрим примеры использования библиотеки для работы с SQLite в Python на примере класса main, который демонстрирует основные операции: создание таблицы, вставку, выборку, обновление и удаление данных.
Установка SQLite
Перед тем как начать работу с SQLite в Python, убедитесь, что у вас установлен модуль sqlite3. В большинстве случаев он уже будет доступен в вашей установке Python. Если нет, вы можете установить его с помощью pip:
pip install pysqlite3
Давайте рассмотрим каждый из методов класса main, который демонстрирует основные операции работы с базой данных SQLite в Python.
Подключение к базе данных
self.db = dbSQLite('myDataBase.sqlite', True)
Этот код создаёт экземпляр класса dbSQLite, который представляет собой подключение к базе данных SQLite. Если база данных с указанным именем не существует, она будет создана.
Создание таблицы
nameTable = 'table_example'
structure = 'id integer PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT, title TEXT, status INTEGER'
answer = self.db.create_table(nameTable, structure)
Этот код создаёт таблицу table_example с указанной структурой. В данном примере создаются столбцы id, name, title и status.
Внесение данных
variable = {'name': 'test_name', 'title': 'test_title', 'status': 'test_status'}
answer = self.db.insert(variable, nameTable, 'name, title, status', ':name, :title, :status')
Этот код вносит данные в таблицу table_example с указанными значениями для столбцов name, title и status.
Выборка данных
variable = {'id': '1'}
answer = self.db.select(variable, '*', nameTable, 'id = :id')
Этот код выполняет запрос на выборку всех данных из таблицы table_example, где значение столбца id равно 1.
Удаление данных
variable = {'id': '1'}
answer = self.db.delete(variable, nameTable, 'id = :id')
Этот код удаляет запись из таблицы table_example, где значение столбца id равно 1.
Обновление данных
variable = {'id': '2', 'name': 'update_test_name', 'status': 'update_test_status'}
answer = self.db.update(variable, nameTable, 'name = :name, status = :status','id = :id')
Этот код обновляет запись в таблице table_example, где значение столбца id равно 2, устанавливая новые значения для столбцов name и status.
Заключение
В этой статье мы рассмотрели примеры использования библиотеки для работы с базой данных SQLite в Python на основе класса main. SQLite предоставляет простой и удобный способ управления данными в приложениях Python, и знание его основных операций может быть полезным при создании различных проектов.
# -*- coding: utf-8 -*-
import sqlite3, time, os
class dbSQLite():
# Подключение / создание БД
def __init__(self, fileLocation, creating = None):
try:
if os.path.exists(fileLocation) == False and creating == None:
raise Exception('The file at '+fileLocation+' was not found')
self.conn = sqlite3.connect(fileLocation)
self.conn.row_factory = self.dict_factory
self.cursor = self.conn.cursor()
except Exception as e:
exit(str(e))
# Подготовка ассоциативного массива
def dict_factory(self, cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
# Вывод данных
def select(self, variable, what, nameTable, where = None, order = None):
try:
sql = 'SELECT '+what+' FROM '+nameTable
sql += ' WHERE '+where if where != None else ''
sql += ' ORDER BY '+order if order != None else ''
variable = {} if variable == None else variable
self.cursor.execute(sql, variable)
return self.cursor.fetchall()
except Exception as e:
return 'Error: select ('+str(e)+')'
# Создание таблицы
def create_table(self, nameTable, structure):
try:
sql = 'CREATE TABLE IF NOT EXISTS '+nameTable+' ('+structure+')'
self.cursor.execute(sql)
self.conn.commit()
return True
except Exception as e:
#result = 'Error: create_table ('+str(e)+')'
time.sleep(0.01)
return self.create_table(nameTable, structure)
# Внесение данных
def insert(self, variable, nameTable, rows = None, values = None):
sql = 'INSERT INTO '+nameTable
sql += ' ('+rows+')' if rows != None else ''
sql += ' VALUES ('+values+')'
variable = {} if variable == None else variable
try:
self.cursor.execute(sql, variable)
result = self.cursor.lastrowid
self.conn.commit()
return result
except Exception as e:
#result = 'Error: insert ('+str(e)+')'
time.sleep(0.01)
return self.insert(variable, nameTable, rows, values)
# Обновление данных
def update(self, variable, nameTable, params, where = None):
try:
sql = 'UPDATE '+nameTable+' SET '+params
sql += ' WHERE '+where if where != None else ''
variable = {} if variable == None else variable
self.cursor.execute(sql, variable)
self.conn.commit()
return True
except Exception as e:
#result = 'Error: update ('+str(e)+')'
time.sleep(0.01)
return self.update(variable, nameTable, params, where)
# Удаление данных
def delete(self, variable, nameTable, where):
try:
sql = 'DELETE FROM '+nameTable+' WHERE '+where
variable = {} if variable == None else variable
self.cursor.execute(sql, variable)
self.conn.commit()
return True
except Exception as e:
#result = 'Error: delete ('+str(e)+')'
time.sleep(0.01)
return self.delete(variable, nameTable, where)
# Закрыть соединение
def disconnect(self):
try:
self.conn.close()
return True
except Exception as e:
result = 'Error: disconnect ('+str(e)+')'
# Пример запросов
class main():
def __init__(self):
# Подключение
self.db = dbSQLite('myDataBase.sqlite', True)
# Создание таблицы
nameTable = 'table_example'
structure = 'id integer PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT, title TEXT, status INTEGER'
#answer = self.db.create_table(nameTable, structure)
#print(answer)
# Внесение данных
variable = {'name': 'test_name', 'title': 'test_title', 'status': 'test_status'}
#answer = self.db.insert(variable, nameTable, 'name, title, status', ':name, :title, :status')
#print(answer)
# Вывод данных
variable = {'id': '1'}
#answer = self.db.select(variable, '*', nameTable, 'id = :id')
#print(answer)
# Удаление
variable = {'id': '1'}
#where = 'name = ? and status = ?'
#answer = self.db.delete(variable, nameTable, 'id = :id')
#print(answer)
# Обновление
variable = {'id': '2', 'name': 'update_test_name', 'status': 'update_test_status'}
#answer = self.db.update(variable, nameTable, 'name = :name, status = :status','id = :id')
#print(answer)
# Закрыть соединение
self.db.disconnect()
if __name__ == "__main__":
main()
- 13.03.2024
- 38
- 0
Работа с базой данных SQLite в Python: примеры использования
Базы данных - важная часть многих программных проектов, и Python предоставляет широкие возможности для работы с ними. Одним из популярных инструментов является SQLite, который представляет собой лёгкую и быструю систему управления базами данных. В этой статье мы рассмотрим примеры использования библиотеки для работы с SQLite в Python на примере класса main, который демонстрирует основные операции: создание таблицы, вставку, выборку, обновление и удаление данных.
Установка SQLite
Перед тем как начать работу с SQLite в Python, убедитесь, что у вас установлен модуль sqlite3. В большинстве случаев он уже будет доступен в вашей установке Python. Если нет, вы можете установить его с помощью pip:
pip install pysqlite3
Давайте рассмотрим каждый из методов класса main, который демонстрирует основные операции работы с базой данных SQLite в Python.
Подключение к базе данных
self.db = dbSQLite('myDataBase.sqlite', True)
Этот код создаёт экземпляр класса dbSQLite, который представляет собой подключение к базе данных SQLite. Если база данных с указанным именем не существует, она будет создана.
Создание таблицы
nameTable = 'table_example'
structure = 'id integer PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT, title TEXT, status INTEGER'
answer = self.db.create_table(nameTable, structure)
Этот код создаёт таблицу table_example с указанной структурой. В данном примере создаются столбцы id, name, title и status.
Внесение данных
variable = {'name': 'test_name', 'title': 'test_title', 'status': 'test_status'}
answer = self.db.insert(variable, nameTable, 'name, title, status', ':name, :title, :status')
Этот код вносит данные в таблицу table_example с указанными значениями для столбцов name, title и status.
Выборка данных
variable = {'id': '1'}
answer = self.db.select(variable, '*', nameTable, 'id = :id')
Этот код выполняет запрос на выборку всех данных из таблицы table_example, где значение столбца id равно 1.
Удаление данных
variable = {'id': '1'}
answer = self.db.delete(variable, nameTable, 'id = :id')
Этот код удаляет запись из таблицы table_example, где значение столбца id равно 1.
Обновление данных
variable = {'id': '2', 'name': 'update_test_name', 'status': 'update_test_status'}
answer = self.db.update(variable, nameTable, 'name = :name, status = :status','id = :id')
Этот код обновляет запись в таблице table_example, где значение столбца id равно 2, устанавливая новые значения для столбцов name и status.
Заключение
В этой статье мы рассмотрели примеры использования библиотеки для работы с базой данных SQLite в Python на основе класса main. SQLite предоставляет простой и удобный способ управления данными в приложениях Python, и знание его основных операций может быть полезным при создании различных проектов.
# -*- coding: utf-8 -*-
import sqlite3, time, os
class dbSQLite():
# Подключение / создание БД
def __init__(self, fileLocation, creating = None):
try:
if os.path.exists(fileLocation) == False and creating == None:
raise Exception('The file at '+fileLocation+' was not found')
self.conn = sqlite3.connect(fileLocation)
self.conn.row_factory = self.dict_factory
self.cursor = self.conn.cursor()
except Exception as e:
exit(str(e))
# Подготовка ассоциативного массива
def dict_factory(self, cursor, row):
d = {}
for idx, col in enumerate(cursor.description):
d[col[0]] = row[idx]
return d
# Вывод данных
def select(self, variable, what, nameTable, where = None, order = None):
try:
sql = 'SELECT '+what+' FROM '+nameTable
sql += ' WHERE '+where if where != None else ''
sql += ' ORDER BY '+order if order != None else ''
variable = {} if variable == None else variable
self.cursor.execute(sql, variable)
return self.cursor.fetchall()
except Exception as e:
return 'Error: select ('+str(e)+')'
# Создание таблицы
def create_table(self, nameTable, structure):
try:
sql = 'CREATE TABLE IF NOT EXISTS '+nameTable+' ('+structure+')'
self.cursor.execute(sql)
self.conn.commit()
return True
except Exception as e:
#result = 'Error: create_table ('+str(e)+')'
time.sleep(0.01)
return self.create_table(nameTable, structure)
# Внесение данных
def insert(self, variable, nameTable, rows = None, values = None):
sql = 'INSERT INTO '+nameTable
sql += ' ('+rows+')' if rows != None else ''
sql += ' VALUES ('+values+')'
variable = {} if variable == None else variable
try:
self.cursor.execute(sql, variable)
result = self.cursor.lastrowid
self.conn.commit()
return result
except Exception as e:
#result = 'Error: insert ('+str(e)+')'
time.sleep(0.01)
return self.insert(variable, nameTable, rows, values)
# Обновление данных
def update(self, variable, nameTable, params, where = None):
try:
sql = 'UPDATE '+nameTable+' SET '+params
sql += ' WHERE '+where if where != None else ''
variable = {} if variable == None else variable
self.cursor.execute(sql, variable)
self.conn.commit()
return True
except Exception as e:
#result = 'Error: update ('+str(e)+')'
time.sleep(0.01)
return self.update(variable, nameTable, params, where)
# Удаление данных
def delete(self, variable, nameTable, where):
try:
sql = 'DELETE FROM '+nameTable+' WHERE '+where
variable = {} if variable == None else variable
self.cursor.execute(sql, variable)
self.conn.commit()
return True
except Exception as e:
#result = 'Error: delete ('+str(e)+')'
time.sleep(0.01)
return self.delete(variable, nameTable, where)
# Закрыть соединение
def disconnect(self):
try:
self.conn.close()
return True
except Exception as e:
result = 'Error: disconnect ('+str(e)+')'
# Пример запросов
class main():
def __init__(self):
# Подключение
self.db = dbSQLite('myDataBase.sqlite', True)
# Создание таблицы
nameTable = 'table_example'
structure = 'id integer PRIMARY KEY AUTOINCREMENT NOT NULL, name TEXT, title TEXT, status INTEGER'
#answer = self.db.create_table(nameTable, structure)
#print(answer)
# Внесение данных
variable = {'name': 'test_name', 'title': 'test_title', 'status': 'test_status'}
#answer = self.db.insert(variable, nameTable, 'name, title, status', ':name, :title, :status')
#print(answer)
# Вывод данных
variable = {'id': '1'}
#answer = self.db.select(variable, '*', nameTable, 'id = :id')
#print(answer)
# Удаление
variable = {'id': '1'}
#where = 'name = ? and status = ?'
#answer = self.db.delete(variable, nameTable, 'id = :id')
#print(answer)
# Обновление
variable = {'id': '2', 'name': 'update_test_name', 'status': 'update_test_status'}
#answer = self.db.update(variable, nameTable, 'name = :name, status = :status','id = :id')
#print(answer)
# Закрыть соединение
self.db.disconnect()
if __name__ == "__main__":
main()