Работа с базой данных sql в python

0

Рассмотрим пример кода на Python, который создает базу данных SQLite и предоставляет интерфейс пользователя для добавления данных с использованием модуля PyQt5.

Рассмотрим пример кода на Python, который создает базу данных SQLite и предоставляет интерфейс пользователя для добавления и удаления данных с использованием модуля PyQt5.

import sys
import sqlite3
from PyQt5.QtWidgets import QApplication, QMainWindow, QLineEdit, QPushButton, QVBoxLayout, QWidget, QTableView, QMessageBox
from PyQt5.QtGui import QStandardItemModel, QStandardItem

# Создание базы данных и таблицы
conn = sqlite3.connect(database.db)
cursor = conn.cursor()
cursor.execute(‘CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)’)

class MainWindow(QMainWindow):
    
def __init__(self):
        
super().__init__()

        
self.setWindowTitle(«Работа с базой данных»)
        
self.setGeometry(300, 300, 400, 300)

        
self.name_input = QLineEdit()
        
self.age_input = QLineEdit()

        
self.add_button = QPushButton(«Добавить»)
        
self.add_button.clicked.connect(self.add_data)

        
self.view_button = QPushButton(«Просмотреть базу данных»)
        
self.view_button.clicked.connect(self.view_data)

        
self.save_button = QPushButton(«Сохранить базу данных»)
        
self.save_button.clicked.connect(self.save_data)

        
self.delete_button = QPushButton(«Удалить запись»)
        
self.delete_button.clicked.connect(self.delete_data)

        
layout = QVBoxLayout()
        
layout.addWidget(self.name_input)
        
layout.addWidget(self.age_input)
        
layout.addWidget(self.add_button)
        
layout.addWidget(self.view_button)
        
layout.addWidget(self.save_button)
        
layout.addWidget(self.delete_button)

        
widget = QWidget()
        
widget.setLayout(layout)

        
self.setCentralWidget(widget)

    
def add_data(self):
        
name = self.name_input.text()
        
age = self.age_input.text()

        
conn.execute(‘INSERT INTO users (name, age) VALUES (?, ?)’, (name, age))
        
conn.commit()

        
self.name_input.clear()
        
self.age_input.clear()
        
self.name_input.setFocus()

    
def view_data(self):
        
result = conn.execute(‘SELECT * FROM users)
        
data = result.fetchall()

        
# Создание модели и заполнение данными
        
model = QStandardItemModel()
        
model.setHorizontalHeaderLabels([‘Имя’, ‘Возраст’])

        
for row in data:
            
row_items = [QStandardItem(str(item)) for item in row]
            
model.appendRow(row_items)

        
# Создание таблицы для отображения данных
        
table = QTableView()
        
table.setModel(model)

        
# Отображение в новом окне
        
window = QMainWindow(self)
        
window.setWindowTitle(«База данных»)
        
window.setGeometry(300, 300, 400, 300)
        window.setCentralWidget(table)
        
window.show()

    
def save_data(self):
        
# Сохранение базы данных в файл
        
with open(‘database.txt’, ‘w’) as file:
            
result = conn.execute(‘SELECT * FROM users)
            
data = result.fetchall()
            
for row in data:
                
file.write({row[0]}, {row[1]}\n«)

        
print(«База данных успешно сохранена»)

    
def delete_data(self):
        
name = self.name_input.text()
        
age = self.age_input.text()

        
# Проверка наличия записи в базе данных
        
result = conn.execute(‘SELECT * FROM users WHERE name=? AND age=?’, (name, age))
data =
result.fetchall()
        
if len(data) > 0:
            
# Удаление записи из базы данных
            
conn.execute(‘DELETE FROM users WHERE name=? AND age=?’, (name, age))
            
conn.commit()
            
QMessageBox.information(self, «Успех«, «Запись успешно удалена«)
        
else:
            
QMessageBox.warning(self, «Ошибка«, «Запись не найдена«)

        
self.age_input.clear()
        
self.name_input.setFocus()

if __name__ == ‘__main__’:
app =
QApplication(sys.argv)
window =
MainWindow()
    
window.show()
    
sys.exit(app.exec_())

.

В этом примере мы импортируем нужные модули, создаем базу данных SQLite и таблицу. Затем мы создаем класс `MainWindow`, который наследуется от `QMainWindow` и предоставляет интерфейс пользователя для добавления данных.

В конструкторе класса мы определяем виджеты `QLineEdit` для ввода имени и возраста, кнопку `QPushButton` для добавления данных, создаем макет `QVBoxLayout` и устанавливаем его для основного виджета.

Метод `add_data` вызывается при нажатии кнопки «Добавить». Он получает значения из полей ввода, выполняет INSERT-запрос для добавления данных в базу данных, и после этого очищает поля ввода.

В этом примере добавим функцию `view_data`, которая отображает содержимое таблицы базы данных в отдельном окне в виде таблицы. Также добавим кнопку `save_button` и функцию `save_data`, которые сохраняют содержимое базы данных в текстовый файл `database.txt`.

Кроме того, не лишним будет добавление функции `delete_data`, которая удаляет записи из базы данных, соответствующие введенным в поля данных `name_input` и `age_input`. Если запись найдена и успешно удалена, пользователю будет показано диалоговое окно с информацией об успешном удалении. Если запись не найдена, будет показано предупреждающее диалоговое окно.

В методе `__main__` мы создаем экземпляр приложения `QApplication`, создаем окно `MainWindow` и отображаем его. Затем мы запускаем приложение с помощью `app.exec_()` и БИНГО! Мы написали свою программу для работы с базами данных.

 

.

Pro

.

Желающие монетизировать работу портала смогут это сделать путем перевода денег

на

Яндекс.Деньги (ЮМАНИ): 410014991836318

или на

СБЕР 4276 7615 8138 7517.

Спасибо большое за вклад в развитие этого проекта!

.

About Author

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *