Главная страница
Навигация по странице:

  • функция-м - подключение к SQL БД (библиотека PyQt_5)

  • функция-м - выполнение запросов к БД (библиотеку PyQt_5)

  • функция-м – выборка данных из БД и очистка запроса(библиотека PyQt_5)

  • функция-м - подключение к SQL БД (библиотек a pyodbc)

  • функция-м – обращение к столбцам таблиц SQL БД (библиотек a pyodbc)

  • функция-м - подключение БД Администрирования Admin_pgolos

  • Тексты программ для БД на языке Рythin. Приложение Листинги


    Скачать 37.37 Kb.
    НазваниеПриложение Листинги
    АнкорТексты программ для БД на языке Рythin
    Дата02.07.2020
    Размер37.37 Kb.
    Формат файлаdocx
    Имя файла1554075750.docx
    ТипДокументы
    #133529

    Приложение 4.

    Листинги.
    Содержание

    1. Листинги элементов функционального модуля М_Работа с БД…….……....1

    2. Листинги элементов функций подсистемы Голосование…………………….5

    3. Листинги GUI-интерфейсов для модулей и функций…………….…………. 7

    4. Листинги элементов функций подсистемы Администрирование………….10

    5. Конфигурирование виртуального хостинга на локальном………………… 12

    сервере для инсталляционного тестирования пилотного проекта

    1. Листинги элементов функционального модуля М_Работа с БД

    Листинги функций модуля


    # Модуль М_Работа с БД

    # функция-м - подключение к SQL БД (библиотека PyQt_5)

    # Виджет для ввода имени БД для дальнейшей работы с ней

    from tkinter import *

    from tkinter import messagebox

    def show_message():

    messagebox.showinfo("имя БД:", message.get())

    root = Tk()

    root.title("Введите имя БД:")

    root.geometry("280x110")

    message = StringVar()

    message_entry = Entry(textvariable=message)

    message_entry.place(relx=.5, rely=.1, anchor="c")

    message_button = Button(text=" Ввод ", command=show_message)

    message_button.place(relx=.5, rely=.5, anchor="c")

    root.mainloop()

    print('Доступ к БД', message.get())

    #print(message.get())

    name_bd = message.get()
    from PyQt5 import QtWidgets, QtSql

    import sys

    # Создается объект приложения для поддержки БД

    app = QtWidgets.QApplication(sys.argv)

    import datetime

    date = datetime.datetime.today()

    # форматирование вывода текущего времени

    print('открыт: ', date.strftime("%d %B %Y - %H.%M"))

    #txt = input("Введите имя БД: ")
    # Открываем базу данных MySQL

    con2 = QtSql.QSqlDatabase.addDatabase ('QMYSQL')

    con2.setHostName("somehost");

    con2.setDatabaseName(name_bd);

    con2.setUserName("someuser");

    con2.setPassword("password");

    con2.open();

    con2.close()

    # Модуль М_Работа с БД

    # функция-м - выполнение запросов к БД (библиотеку PyQt_5)

    # может быть ввод другой БД

    Con = QtSql.QSqlDatabase.addDatabase('QMYSQL')

    Con.setDatabaseName('data.sqlite')

    Con.open()

    if 'good' not in con.tables():

    query = QtSql.QSqlQuery()

    query.exec("create table good(id integer primary key 

    autoincrement, goodname text, goodcount integer) ")
    query.prepare("insert into good values(null, ?, ?)")

    query.addBindValue('Пароль')

    query.addBindValue(10)

    query.exec_()
    query.prepare("insert into good values(null, ?, ?)")

    query.bindValue(0, 'Пароль')

    query.bindValue(1, 10)

    query.exec_()
    query.prepare("insert into good values(null, :name, :count)")

    query.bindValue(':name', 'Пароль')

    query.bindValue(':count', 10)

    query.exec_()
    query.prepare("insert into good values(null, :name, :count)")

    lst1 = ['Пароль', 'Дата изменения пароля', 'Администратор']

    lst2 = [10, 3, 8]

    query.bindValue(':name', lst1)

    query.bindValue(':count', lst2)

    query.execBatch()
    query.prepare("select * from good order by goodname")

    query.setForwardOnly(True)

    query.exec_()
    # Модуль М_Работа с БД

    # функция-м – выборка данных из БД и очистка запроса(библиотека PyQt_5)

    # может быть ввод другой БД

    from PyQt5 import QtWidgets, QtSql

    import sys

    app = QtWidgets.QApplication(sys.argv)

    con = QtSql.QSqlDatabase.addDatabase('QSQLITE')

    con.setDatabaseName('data.sqlite')

    con.open()

    query = QtSql.QSqlQuery()

    query.exec("select * from good order by goodname")

    lst = []

    if query.isActive():

    query.first()

    while query.isValid():

    lst.append(query.value('goodname') + ': ' + 

    str(query.value('goodcount')) + ' шт.')

    query.next()

    for p in lst: print(p)

    con.close()

    # Очистка запроса


    query = QtSql.QSqlQuery()

    query.exec("select * from good order by goodname")

    # Обрабатываем результат запроса

    query.finish()

    query.exec("select count(*) as cnt from good")

    # Работаем с новым запросом
    # Модуль М_Работа с БД

    # функция-м - подключение к SQL БД (библиотекa pyodbc)

    import datetime

    date = datetime.datetime.today()

    # форматирование вывода текущего времени

    print('now ', date.strftime("%d %B %Y - %H.%M"))

    txt = input("Введите имя БД: ")

    print("Вы ввели имя БД-", txt)

    # подключение к SQL базе Region_draftDB и инициализация базы

    import pyodbc

    database = txt

    from datetime import datetime

    class Sql: # создан класс Sql с применением метода иницализации connect() для подключения к SQL базе данных

    def __init__(self, database, server="LAPTOP-OCF7SOEG\SQLEXPRESS"): # в конструкторе класса методом __init__

    # передается строковое имя сервера

    # функция подключения к SQL базе данных

    self.cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"

    "Server="+server+";" # строки server и database

    "Database="+database+";" # передаются в функцию pyodbc.connect()

    "Trusted_Connection=yes;")

    # в конце класса создаётся строка, обновляемая с каждым передаваемым запросом -

    # это позволяет собирать логи, для записи времени используется стандартная библиотека datetime

    print("Доступ к БД Администратора ")

    print("подсистемы Администрирование", str(database), "открыт ", date.strftime("%d %B %Y"))

    print("время открытия БД", date.strftime("%H.%M"))

    self.query = "-- {}\n\n-- Made in Python".format(datetime.now()

    .strftime("%d/%m/%Y"))
    # Модуль М_Работа с БД

    # функция-м – обращение к столбцам таблиц SQL БД (библиотекa pyodbc)

    # метод инициализации connect()
    server="LAPTOP-OCF7SOEG\SQLEXPRESS"

    cnn = pyodbc.connect("Driver={SQL Server Native Client 11.0};""Server="+server+";""Database="+database+";""Trusted_Connection=yes;")

    cursor = cnn.cursor() # создаем курсор - специальный объект который делает запросы и получает их результаты

    # выполнение запроса к БД с использованием SQL-синтаксиса

    cursor.execute("SELECT Section_legisl,For_init FROM Public_init")

    # Получен результат сделанного запроса

    results = cursor.fetchall()

    print(cnn)

    print("\n")

    # контрольная проверка записи в БД

    #print(results)

    # закрыть соединение с БД портала

    cnn.close()
    # Модуль М_Работа с БД

    # функция-м - подключение БД Администрирования Admin_pgolos

    # для изменения паролей депутатов (библиотека pyodbc)

    import pyodbc

    database = "Admin_pgolosDB"

    from datetime import datetime

    class Sql: # для подключения к БД SQL создан класс Sql

    def __init__(self, database, server="LAPTOP-OCF7SOEG\SQLEXPRESS"): # в методе инициализации _init_

    # передается строковое имя сервера

    # функция подключения к БД SQL

    # строка подключения передается в функцию pyodbc.connect()

    self.cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"

    "Server="+server+";"

    "Database="+database+";"

    "Trusted_Connection=yes;")

    # в конце класса создаётся строка, обновляемая с каждым передаваемым запросом -

    # это позволяет собирать логи, для записи времени используется стандартная библиотека datetime

    print("\n Для работы с MS SQL Server через программный интерфейс ODBC используется модуль pyodbc")

    print(" и применен метод инициализации SQL сервера __ init __ ")

    print("Доступ к базе данных по результатам онлайн-голосования по принимаемым законопроектам ")

    print("регионального уровня", str(database), "открыт методом инициализации * init *")

    self.query = "-- {}\n\n-- Made in Python".format(datetime.now()

    .strftime("%d/%m/%Y"))

    sql = Sql(database)

    print(sql)

    # выполнение второго Д/З. Реализовано обращение к SQL базе Region_draftDB

    # выведен построчно массив значений столбцов Section_legisl и For_init таблицы Public_init базы Region_draftDB

    server="LAPTOP-OCF7SOEG\SQLEXPRESS"

    cnn = pyodbc.connect("Driver={SQL Server Native Client 11.0};""Server="+server+";""Database="+database+";""Trusted_Connection=yes;")

    cursor = cnn.cursor() # создаем курсор - специальный объект который делает запросы и получает их результаты

    # выполнен SELECT запрос к базе данных, используя SQL-синтаксис

    # из таблицы sec_rec записи столбца пароль - password

    cursor.execute("SELECT Sec_rec,For_init FROM password")

    # Получен результат сделанного запроса

    results = cursor.fetchall()

    print(cnn)

    print("\n")

    print(results)

    # закрыть соединение с базой данных Admin_pgolosDB

    cnn.close()
    # КОД ДЛЯ ДАЛЬНЕЙШЕЙ РАБОТЫ С БАЗОЙ ДАННЫХ

    # КОД ВСТАВЛЯТЬ В ЭТО МЕСТО

    # *Запись в базу*

    #cursor.execute("insert into Artist values (Null, 'A Aagrh!') ")

    # Если мы не просто читаем, но и вносим изменения в базу данных - необходимо сохранить транзакцию

    #conn.commit()

    # Проверяем результат

    #cursor.execute("SELECT Name FROM Artist ORDER BY Name LIMIT 3")

    #results = cursor.fetchall()


    2. Листинги элементов функций подсистемы Голосование

    # Подсистема Голосование

    # Функция работы со справочниками по законопроектам

    import sys

    from PyQt5.QtWidgets import (QWidget, QLabel, QLineEdit,

    QTextEdit, QGridLayout, QApplication)

    class Example(QWidget):

    def __init__(self):

    super().__init__()

    self.initUI()

    def initUI(self):

    title = QLabel('Раздел законодательства:')

    author = QLabel('Законопроект:')

    review = QLabel('Документ законопроекта')

    titleEdit = QLineEdit()

    authorEdit = QLineEdit()

    reviewEdit = QTextEdit()

    grid = QGridLayout()

    grid.setSpacing(10)

    grid.addWidget(title, 1, 0)

    grid.addWidget(titleEdit, 1, 1)

    grid.addWidget(author, 2, 0)

    grid.addWidget(authorEdit, 2, 1)

    grid.addWidget(review, 3, 0)

    grid.addWidget(reviewEdit, 3, 1, 5, 1)

    self.setLayout(grid)

    self.setGeometry(500, 300, 550, 300)

    self.setWindowTitle('Справочник по законопроектам')

    self.show()

    if __name__ == '__main__':

    app = QApplication(sys.argv)

    ex = Example()

    sys.exit(app.exec_())

    # Подсистема Голосование

    # QComboBox – это виджет, который позволяет пользователю выбирать из списка вариантов (выпадающий список)

    #!/usr/bin/python3
    import sys

    from PyQt5.QtWidgets import (QWidget, QLabel,

    QComboBox, QApplication)
    class Example(QWidget):
    def __init__(self):

    super().__init__()
    self.initUI()

    def initUI(self):
    self.lbl = QLabel("Количественное по большинству", self)
    combo = QComboBox(self)

    combo.addItems(["За", "Против",

    "Воздерживаюсь", "Альтернативное", "Рейтинговое"])
    combo.move(50, 50)

    self.lbl.move(50, 150)
    combo.activated[str].connect(self.onActivated)
    self.setGeometry(500, 300, 400, 200)

    self.setWindowTitle('ГОЛОСОВАНИЕ ПО ЗАКОНОПРОЕКТУ')

    self.show()

    def onActivated(self, text):
    self.lbl.setText(text)

    self.lbl.adjustSize()

    if __name__ == '__main__':
    app = QApplication(sys.argv)

    ex = Example()

    sys.exit(app.exec_())

    3. Листинги специализированных GUI-интерфейсов для модулей и функций
    # Подсистема Голосование

    # Form implementation generated from reading ui file 'online_voting.ui'

    # Created by: PyQt5 UI code generator 5.13.2

    from PyQt5 import QtCore, QtGui, QtWidgets

    class Ui_Dialog(object):

    def setupUi(self, Dialog):

    Dialog.setObjectName("Dialog")

    Dialog.resize(669, 444)

    Dialog.setSizeGripEnabled(False)

    Dialog.setModal(False)

    self.pushButton = QtWidgets.QPushButton(Dialog)

    self.pushButton.setGeometry(QtCore.QRect(270, 250, 101, 23))

    self.pushButton.setObjectName("pushButton")

    self.pushButton_2 = QtWidgets.QPushButton(Dialog)

    self.pushButton_2.setGeometry(QtCore.QRect(270, 290, 101, 23))

    self.pushButton_2.setObjectName("pushButton_2")

    self.pushButton_3 = QtWidgets.QPushButton(Dialog)

    self.pushButton_3.setGeometry(QtCore.QRect(270, 330, 101, 21))

    self.pushButton_3.setObjectName("pushButton_3")

    self.textEdit = QtWidgets.QTextEdit(Dialog)

    self.textEdit.setGeometry(QtCore.QRect(110, 60, 451, 151))

    self.textEdit.setObjectName("textEdit")

    self.dateEdit = QtWidgets.QDateEdit(Dialog)

    self.dateEdit.setGeometry(QtCore.QRect(110, 30, 110, 22))

    self.dateEdit.setDateTime(QtCore.QDateTime(QtCore.QDate(2020, 5, 28), QtCore.QTime(0, 0, 0)))

    self.dateEdit.setObjectName("dateEdit")

    self.retranslateUi(Dialog)

    QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):

    _translate = QtCore.QCoreApplication.translate

    Dialog.setWindowTitle(_translate("Dialog", "Голосование. Количественное по большинству голосов"))

    self.pushButton.setText(_translate("Dialog", "За"))

    self.pushButton_2.setText(_translate("Dialog", "Против"))

    self.pushButton_3.setText(_translate("Dialog", "Воздерживаюсь"))

    self.textEdit.setHtml(_translate("Dialog", "\n"

    "\n"

    "
    Законопроект: Об установлении ставок налога, взимаемого в связи с применением упрощенной системы налогообложения, для отдельных категорий налогоплательщиков
    \n"


    "


    >> %htmlfile%

    @echo %new_dir% >> %htmlfile%

    @echo ^


    написать администратору сайта