Python Tkinter文本输入框,将数据插入SQL Server

发布于 2025-02-07 09:04:15 字数 2232 浏览 2 评论 0原文

我创建了一个小型Python Tkinter程序,旨在将用户写入数据中的用户将数据写入应用程序中的文本输入框,然后将此数据插入MS SQL Server数据库中。单击“插入”按钮时,我会收到以下错误消息,将应用程序插入SQL中。

cursor.execute(“插入test_disa_main_table values(:dense_value,:date,:date,:date,:time,:time,:chart_value)”, pyodbc.programmingerror :('sql包含0个参数标记,但提供了1个参数','hy000')*

这是我的python插入函数的代码:

def insertvalue():
    # Create a database or connect to one
    conn = pyodbc.connect('Driver={SQL Server};'
                  'Server=MON-SQL-02;'
                  'Database=ENVIRONMENTAL;'
                  'Trusted_Connection=yes;')
    # Create cursor
    cursor = conn.cursor()

    # Insert into table
    cursor.execute("INSERT INTO TEST_DISA_MAIN_TABLE VALUES (:DENSITY_VALUE, :DATE, :TIME, :CHART_VALUE)",
            {
                'DENSITY_VALUE': DENSITY_VALUE.get(),
                'DATE': DATE.get(),
                'TIME': TIME.get(),
                'CHART_VALUE': CHART_VALUE.get(),
            })

    # Commit changes
    conn.commit()
    #Close Connection
    conn.close()

    # Clear the text boxes
    DENSITY_VALUE.delete(0, END)
    DATE.delete(0, END)
    TIME.delete(0, END)
    CHART_VALUE.delete(0, END)

#Create text boxes
DENSITY_VALUE = Entry(root, width=30)
DENSITY_VALUE.grid(row=2, column=1)
DATE = Entry(root, width=30)
DATE.grid(row=3, column=1)
TIME = Entry(root, width=30)
TIME.grid(row=4, column=1)
CHART_VALUE = Entry(root, width=30)
CHART_VALUE.grid(row=5, column=1)

#Create Text box labels
DENSITY_VALUE_Label = Label(root, text="Density Value")
DENSITY_VALUE_Label.grid(row=2, column=0)
DATE_Label = Label(root, text="Date")
DATE_Label.grid(row=3, column=0)
TIME_Label = Label(root, text="Time")
TIME_Label.grid(row=4, column=0)
CHART_VALUE_Label = Label(root, text="Chart Value")
CHART_VALUE_Label.grid(row=5, column=0)

button = Button(root, text = "Show All Values", command = showvalues)
button.grid(row=0, column=0)

button = Button(root, text = "Insert Values", command = insertvalue)
button.grid(row=1, column=0)

#Commit changes
conn.commit()

# Close connection
conn.close()

root.mainloop()

我使用此格式将数据插入sqlite3 db,但是相同,但是相同格式插入SQL Server数据库时不起作用。我已经测试了与SQL Server的连接,并且可以在应用程序中显示值,以便该部分正常工作。

I have created a small python tkinter program designed to have a user write data into text entry boxes in the app then insert this data into a MS SQL server database. When clicking the insert button I am getting the following error message, stopping the app from insert the code into SQL.

cursor.execute("INSERT INTO TEST_DISA_MAIN_TABLE VALUES (:DENSITY_VALUE, :DATE, :TIME, :CHART_VALUE)",
pyodbc.ProgrammingError: ('The SQL contains 0 parameter markers, but 1 parameters were supplied', 'HY000')*

This is my code for the python insert function:

def insertvalue():
    # Create a database or connect to one
    conn = pyodbc.connect('Driver={SQL Server};'
                  'Server=MON-SQL-02;'
                  'Database=ENVIRONMENTAL;'
                  'Trusted_Connection=yes;')
    # Create cursor
    cursor = conn.cursor()

    # Insert into table
    cursor.execute("INSERT INTO TEST_DISA_MAIN_TABLE VALUES (:DENSITY_VALUE, :DATE, :TIME, :CHART_VALUE)",
            {
                'DENSITY_VALUE': DENSITY_VALUE.get(),
                'DATE': DATE.get(),
                'TIME': TIME.get(),
                'CHART_VALUE': CHART_VALUE.get(),
            })

    # Commit changes
    conn.commit()
    #Close Connection
    conn.close()

    # Clear the text boxes
    DENSITY_VALUE.delete(0, END)
    DATE.delete(0, END)
    TIME.delete(0, END)
    CHART_VALUE.delete(0, END)

#Create text boxes
DENSITY_VALUE = Entry(root, width=30)
DENSITY_VALUE.grid(row=2, column=1)
DATE = Entry(root, width=30)
DATE.grid(row=3, column=1)
TIME = Entry(root, width=30)
TIME.grid(row=4, column=1)
CHART_VALUE = Entry(root, width=30)
CHART_VALUE.grid(row=5, column=1)

#Create Text box labels
DENSITY_VALUE_Label = Label(root, text="Density Value")
DENSITY_VALUE_Label.grid(row=2, column=0)
DATE_Label = Label(root, text="Date")
DATE_Label.grid(row=3, column=0)
TIME_Label = Label(root, text="Time")
TIME_Label.grid(row=4, column=0)
CHART_VALUE_Label = Label(root, text="Chart Value")
CHART_VALUE_Label.grid(row=5, column=0)

button = Button(root, text = "Show All Values", command = showvalues)
button.grid(row=0, column=0)

button = Button(root, text = "Insert Values", command = insertvalue)
button.grid(row=1, column=0)

#Commit changes
conn.commit()

# Close connection
conn.close()

root.mainloop()

I used this format to insert data into a sqlite3 db, but the same format is not working when inserting into a SQL Server database. I have tested the connection to the SQL server and can display values in the app so that part works correctly.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文