Я пытаюсь написать приложение, которое будет легко обновлять базу данных при добавлении нового оборудования. Пока я могу подключиться к базе данных и создал графический интерфейс, чтобы показать несколько вещей.
Теперь я застрял при попытке вставить новую запись из записи, которую делает пользователь. Обычно пользователь вводит 3 значения: EquipmentName, HostName и ValidationName, которые создают новую запись в базе данных.
Я получаю сообщение об ошибке:
строка 32, в submit
'ValidationName': ValidationName.get () pyodbc.ProgrammingError: ('SQL содержит 0 маркеров параметров, но были предоставлены 1 параметры', 'HY000')
Я пытался все от Google, но не повезло в
Извините, если это не имеет смысла, я впервые пытаюсь написать код на python.
from tkinter import *
import pyodbc
#Create application and size
root = Tk()
root.title('Application')
root.geometry("400x400")
# Connect to SQL Server database
conn = pyodbc.connect('Driver={SQL Server};'
'Server=USGRE-PC0XLKJM\SQLEXPRESS;'
'Database=LAB;'
'Trusted_Connection=yes;')
#Create cursor
cursor = conn.cursor()
cursor.execute('SELECT * FROM LAB.dbo.LabSystem')
#Create submit function for database
def submit():
# Connect to SQL Server database
conn = pyodbc.connect('Driver={SQL Server};'
'Server=USGRE-PC0XLKJM\SQLEXPRESS;'
'Database=LAB;'
'Trusted_Connection=yes;')
# Create cursor
cursor = conn.cursor()
# Insert into table
cursor.execute("INSERT INTO LAB.dbo.LabSystem VALUES (:EquipmentName, :HostName, :ValidationName)",
{
'EquipmentName': EquipmentName.get(),
'HostName': HostName.get(),
'ValidationName': ValidationName.get()
})
# Commit changes
conn.commit()
# Close connection
conn.close()
# Clear the text boxes
EquipmentName.delete(0, END)
HostName.delete(0, END)
ValidationName.delete(0, END)
# Create query function
def query():
# Connect to SQl Server DB
conn = pyodbc.connect('Driver={SQL Server};'
'Server=USGRE-PC0XLKJM\SQLEXPRESS;'
'Database=LAB;'
'Trusted_Connection=yes;')
# Create cursor
cursor = conn.cursor()
# Query the database
cursor.execute("SELECT *,SystemID FROM LAB.dbo.LabSystem")
records = cursor.fetchall()
#print(records)
#Loop through results
print_records = ''
for record in records:
print_records += str(record[0]) + " " +str(record[2]) + " " "\n"
query_label = Label(root, text=print_records)
query_label.grid(row=3, column=0, columnspan=2)
# Commit changes
conn.commit()
# Close connection
conn.close()
# Create text boxes
EquipmentName = Entry(root, width=30)
EquipmentName.grid(row=0, column=1, padx=20)
HostName = Entry(root, width=30)
HostName.grid(row=1, column=1)
ValidationName = Entry(root, width=30)
ValidationName.grid(row=2, column=1)
# Create labels for text boxes
EquipmentName_label = Label(root, text="Equipment Name")
EquipmentName_label.grid(row=0, column=0)
HostName_label = Label(root, text="Host Name")
HostName_label.grid(row=1, column=0)
ValidationName_label = Label(root, text="Validation Name")
ValidationName_label.grid(row=2, column=0)
# Create submit button to add entries
submit_btn = Button(root, text="Add record", command=submit)
submit_btn.grid(row=6, column=0, columnspan=2, pady=10, padx=10)
# Create a query button
query_btn = Button(root, text="Show Records", command=query)
query_btn.grid(row=7, column=0, columnspan=2, pady=10, padx=10, ipadx=137)
#Commit changes
conn.commit()
# Close connection
conn.close()
root.mainloop()