python - 从python将单选按钮值插入oracle数据库时出错
问题描述
链接到我之前的问题。
我正在开展一个项目,该项目基本上会向用户提出 3 个问题,并且答案将以带有 2 个选项的单选按钮的形式提供。选择选项后单击提交后,我需要将值插入到 oracle 数据库中。现在,当我尝试添加一些我已经设置的变量时,我收到错误cx_Oracle.DatabaseError: ORA-01036: illegal variable name/number
我在 oracle 数据库中创建了一个名为“Survey”的表,其中包含以下字段 1) STAFFID 2) MACHINE 3) CURRENT_TIME 4) DAY 5) MOOD 6) WORK
我正在寻求帮助
1)如何将变量作为值插入数据库?(Staffid、machine、date_str是我试图在数据库字段STAFFID、MACHINE、CURRENT_TIME中插入的值)
2) 我如何将单选按钮值day_selected、mood_selected 和 work_selected 插入数据库字段DAY、MOOD、WORK
下面是我的代码。
from tkinter import *
import tkinter.messagebox
import getpass
import socket
from datetime import datetime
root=Tk()
root.title("Survey")
root.geometry("225x225")
root.config(bg="antique white")
root.resizable(width="false", height="false")
day_selected = IntVar()
mood_selected = IntVar()
work_selected = IntVar()
# creating values for entry
staffid = getpass.getuser()
machine = socket.gethostname()
now = datetime.now()
date_str = now.strftime("%Y/%m/%d %H:%M:%S")
day_sel = day_selected.get()
def done():
print(staffid)
print(machine)
print(date_str)
print(day_sel)
print("Good" if day_selected.get()==1 else "BAD")
print("Good" if mood_selected.get()==3 else "BAD")
print("Good" if work_selected.get()==5 else "BAD")
dsn_tns = cx_Oracle.makedsn('server', 'port', service_name='XXXX.XX.XXXX')
conn = cx_Oracle.connect(user=r'XXXX', password='XXXX', dsn=dsn_tns)
cur = conn.cursor()
cur.execute("INSERT INTO SURVEY (STAFF_ID, HOST_NAME, CURRENT_TIME, DAY, MOOD, WORK) VALUES (%s, %s, %s, %s, %s, %s)",
(staffid, machine))
conn.commit()
cur.close()
conn.close()
tkinter.messagebox.showinfo("Thank you", "Thank you for completing the survey !!!")
lab1 = Label(root, text=" How Was ?", font=("calibri", 20, "bold"), bg="antique white", fg="brown").pack()
lab2 = Label(root, text="Day", font=("calibri", 14, "bold"),bg="antique white")
lab2.place(x=8, y=50)
r1=Radiobutton(root,text="Good", font=("calibri",12), variable=day_selected, value=1,bg="antique white").place(x=110,y=52)
r2=Radiobutton(root,text="Bad",font=("calibri",12), variable=day_selected, value=2,bg="antique white").place(x=170,y=52)
lab3 = Label(root, text="Mood", font=("calibri", 14, "bold"),bg="antique white")
lab3.place(x=8, y=100)
r3=Radiobutton(root,text="Good", font=("calibri",12), variable=mood_selected, value=3,bg="antique white").place(x=110,y=102)
r4=Radiobutton(root,text="Bad",font=("calibri",12), variable=mood_selected, value=4,bg="antique white").place(x=170,y=102)
lab4 = Label(root, text="Work", font=("calibri", 14, "bold"),bg="antique white")
lab4.place(x=8, y=150)
r5=Radiobutton(root,text="Good", font=("calibri",12), variable=work_selected, value=5,bg="antique white").place(x=110,y=152)
r6=Radiobutton(root,text="Bad",font=("calibri",12), variable=work_selected, value=6,bg="antique white").place(x=170,y=152)
sub_bt=Button(root, text="Submit",font=("calibri",12, "bold"), command=done, bg="brown", fg="white").pack(side=BOTTOM)
root.mainloop()
解决方案
推荐阅读
- user-permissions - Mojave 命令行工具的摄像头和麦克风权限
- ruby-on-rails - 如何从 link_to 帖子中调用控制器中的邮件操作
- html - 使用 Flexbox 将元素向右移动
- python - I need to get news article data. I'm using request/get from python but I got this error: 403 forbidden
- c# - 如何将 DynamicResource 的值发送到我的自定义控件 C# 后端?
- java - Jersey 过滤器中的 @Priority 注释用法
- dialogflow-es - 模糊实体是否用输入上下文标识?
- rpm - 如何在 rpm 规范文件中获取安装程序用户名?
- javascript - React DOMException:无法在“节点”上执行“removeChild”:要删除的节点不是该节点的子节点
- angular - 如何在 Kubernetes 中使用 ngnix 连接后端和前端