gpt4 book ai didi

python - 尝试使用 pyodbc 和 tkinter 将记录插入 SQL Server

转载 作者:行者123 更新时间:2023-12-01 07:09:49 26 4
gpt4 key购买 nike

我正在尝试编写一个应用程序,在添加新设备时可以轻松更新数据库。到目前为止,我已经能够连接到数据库并创建了一个 GUI 来显示一些内容。

现在我一直试图从用户创建的条目中插入新记录。基本上,用户输入 3 个值:EquipmentName、HostName 和 ValidationName,这将在数据库中创建新记录。

我收到错误:

line 32, in submit
'ValidationName': ValidationName.get() pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')

我尝试用谷歌搜索所有内容,但没有成功

抱歉,如果这没有意义,这是我第一次尝试使用 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()

最佳答案

就问题而言,pyodbc does not support named parameters .

您可以尝试使用位置参数而不是命名参数:

cursor.execute(
"INSERT INTO LAB.dbo.LabSystem VALUES (?, ?, ?)",
EquipmentName.get(),
HostName.get(),
ValidationName.get()
)

关于python - 尝试使用 pyodbc 和 tkinter 将记录插入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58278421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com