Добавление в БД(ms sql server) через python

В классе Add_Record при использовании метода new_record вылетает ошибка при добавлении в БД,данные с формы записываются в self.data, а потом не получается их внести в таблицу

from PyQt5 import QtWidgets
import sys
import pypyodbc


from PyQt5.QtCore import QSize, Qt
from PyQt5.QtWidgets import QTableWidgetItem,QLineEdit, QMessageBox

#главная форма
from my import Ui_MainWindow
from new_record import Ui_MainWindow2


class Add_Record(QtWidgets.QMainWindow):              
    def __init__(self):
        super(Add_Record, self).__init__()
        self.ui = Ui_MainWindow2()
        self.ui.setupUi(self)
        self.list_of_tables()
        #кнопка "Выбрать таблицу"
        self.ui.pushButton_2.clicked.connect(self.selected)
        #кнопка "Добавить запись"
        self.ui.pushButton.clicked.connect(self.new_record)
        
        
         
         

    def selected(self):
        #получаем название выбранной таблицы
        self.selected_table=(str(self.ui.comboBox.currentText()))
        #названия столбцов
        self.name_columns=column_names(self.selected_table)
        print(self.name_columns)
        self.ui.tableWidget.setRowCount(len(self.name_columns))
        self.ui.tableWidget.setColumnCount(2)
        
        row=0   
       
        for item in self.name_columns:
            cellinfo = QTableWidgetItem(item)
            self.ui.tableWidget.setItem(row, 0, cellinfo)
            row += 1

        #self.ui.tableWidget.resizeColumnsToContents()
       
     
         
          
   
    def new_record(self):
        self.data=[]
        for i in range(len(self.name_columns)):
                self.data.append(self.ui.tableWidget.item(i, 1).text() )
                #print(self.ui.tableWidget.item(i, 1).text())
        print(self.data)  

        record=''
        for i in range(len(self.name_columns)):
            if i==len(self.name_columns)-1:
                 record=record+self.data[i]
            else:    
                record=record+self.data[i]+","
        print(record)         
            
       
        mySQLQuery = f"INSERT INTO dbo.Руквоводитель  (ИНН_БТИ,ID_руководителя,Серия_и_номер_паспорта,ФИО,Образоване,Мобильный_телефон)  VALUES ('{self.data[0]},{self.data[1]},{self.data[2]},{self.data[3]},{self.data[4]},{self.data[5]}) "

        cursor.execute(mySQLQuery)
        # дать согласие на выполнение команды
        connection.commit();  
        

        
             

      
 
     #combobox
    def list_of_tables(self):
        #получение списка таблиц =results,results1-промежуточная
        results1 = name_table()
        #список таблиц без скобок и кавычек
        results = []
        for i in results1:
            results.append(i[0])
        #загрузка combobox
        for i in range(len(results)):
            self.ui.comboBox.addItem(results[i]) 
 
        
class Main_Window(QtWidgets.QMainWindow):
    def __init__(self):
        super(Main_Window, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        #кнопка "Показать таблицу"
        self.ui.pushButton.clicked.connect(self.show_table)

        #кнопка "Добавить запись"
        self.ui.pushButton_2.clicked.connect(self.show_add_record)

    def show_add_record(self):
                self.w2 = Add_Record()
                self.w2.show()

    #кнопка "Показать таблицу"
    def show_table(self):
        #получаем название выбранной таблицы
        selected_table=(str(self.ui.comboBox.currentText()))
        #названия столбцов
        name_columns=column_names(selected_table)
        #количество строк
        count_rows=count_table(selected_table)
        #количество столбцов
        count_columns=len((name_columns))
        #получение записей в таблице
        records=records_from_the_database(selected_table)
        #добавление записей из таблицы на форму
        application.tab(count_columns,count_rows[0],name_columns,records) 

    #combobox
    def list_of_tables(self,table):
        for i in range(len(table)):
            self.ui.comboBox.addItem(table[i])  
        
    #таблица
    def tab(self,columns,rows,columns_name,records):
        print(columns,rows)
        self.ui.tableWidget.setColumnCount(columns)
        self.ui.tableWidget.setRowCount(rows)
        # заголовки для столбцов.
        self.ui.tableWidget.setHorizontalHeaderLabels((columns_name))
        for i in range(columns):
            self.ui.tableWidget.horizontalHeaderItem(i).setTextAlignment(Qt.AlignLeft)
        #вывод записей
        row = 0
        for tup in (records):
            col = 0
            for item in tup:
                cellinfo = QTableWidgetItem(item)
                self.ui.tableWidget.setItem(row, col, cellinfo)
                col += 1
            row += 1 
        self.ui.tableWidget.resizeColumnsToContents()



# получить названия таблиц
def name_table():
    mySQLQuery = ("SELECT TABLE_NAME FROM information_schema.tables")
    cursor.execute(mySQLQuery)
    results = cursor.fetchall()

    arr = list(results)
    arr.pop(len(arr) - 1)
    return arr

#названия столбцов
def column_names(table):
    #print(table)
    cursor.execute("SELECT COLUMN_NAME FROM БТИ.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '"+(table)+"'")
    results1 = cursor.fetchall()
    
    results = []
    for i in results1:
        results.append(i[0])
    #print(results)
    return results

#количество записей в таблице(количество строк в таблице)   
def count_table(table):
    print(table)
    cursor.execute("SELECT COUNT(*) FROM "+(table))
    results1 = cursor.fetchall()
    results = []
    for i in results1:
        results.append(i[0])
    #print(results)
    return results

     

#получить данные из таблицы
def records_from_the_database(name_table):
    cursor.execute("""SELECT * FROM """+(name_table ))
    results = cursor.fetchall()
    for item in range(len(results)):
              results[item]=str(results[item])
              results[item]=" ".join(results[item].split())
              results[item]=str(results[item])

    new_arr = [i[1:-2].split(", ") for i in results]
    return new_arr    


global  application 

if __name__ == "__main__":
#подключение БД
    connection = pypyodbc.connect("Driver={SQL Server};"
                                  "Server=DESKTOP-NBL8O8E;"
                                  "Database=БТИ;")
#включаем курсор
    cursor = connection.cursor()

    #получение списка таблиц =results,results-промежуточная
    results1 = name_table()
    #список таблиц без скобок и кавычек
    results = []
    for i in results1:
        results.append(i[0])
    

    #форма
    app = QtWidgets.QApplication([])
    application = Main_Window()

    application.list_of_tables(results)

    application.show()
    sys.exit(app.exec())
    
    # закрыть бд
    connection.close()

Ответы (0 шт):