微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法将 Tkinter 连接到 Sql 数据库 (Pyrhon)

如何解决无法将 Tkinter 连接到 Sql 数据库 (Pyrhon)

我正在一个项目中使用 Selenium(Python) 抓取亚马逊产品详细信息。我尝试使用 Tkinter for Gui 和 sqlite3 来存储数据。但是我在插入函数中遇到错误。而且我无法将 Tkinter 输出连接到数据库。如果我将 'prod_name1.get()' 和 'priceis1.get()' 分别更改为 'url_txt.get()' 和 'priceis_txt.get()',我不再收到错误,但数据库为空只有当我使用输入框并使用“添加产品”按钮添加值时,它才会被填充。 代码如下:

amaz=Tk()
amaz.title("Amazon Sel")

con=sqlite3.connect('products.db')
curr=con.cursor()

curr.execute("CREATE TABLE IF NOT EXISTS Amaz(Id INTEGER PRIMARY KEY,Product TEXT,PriceFrom REAL,PriceIs REAL)")
con.commit()

def amazon():
    options=Options()
    
    path="C:/Users/xyz/PycharmProjects/pythonProject/Amaz/amaz.xlsx"
    workbk=openpyxl.load_workbook(path)
    sheet=workbk.active

    sheet.cell(row=1,column=1).value = "Product"
    sheet.cell(row=1,column=2).value = "Price"

    curr.execute("SELECT * FROM Amaz")
    all=curr.fetchall()

    urls=["https://www.amazon.in/boAt-BassHeads-100-Headphones-Black/dp/B071Z8M4KX/ref=psdc_1388921031_t1_B01DEWVZ2C","https://www.amazon.in/ZAPATOZ-Women-Black-Medium-Top-Sports/dp/B08KS5X6YP/ref=sr_1_13?dchild=1&keywords=shoes+women+black+sneakers&qid=1615877072&sr=8-13#customerReviews","https://www.amazon.in/Blinder-Lightweight-Comfortable-Lace-Up-sneakers/dp/B08TTTPdpl/ref=sr_1_18?dchild=1&keywords=shoes%2Bwomen&qid=1615880238&sr=8-18&th=1&psc=1"]

   
    driver = webdriver.Chrome(executable_path=r"C:\Users\xyz\PycharmProjects\pythonProject\chromedriver.exe",options=options)
    prow=1
    r=2
    i=1

    def insert_prod():
        curr.execute("INSERT INTO Amaz(product,pricefrom,priceis) VALUES(?,?,?)",(prod_name1.get(),pricefrom_txt.get(),priceis1.get()))
        con.commit()
        messageBox.showinfo("Notification","Product added to the cart successfully")
        reset()

    for url in urls:
        driver.get(url)
        try:
            ele = driver.find_element_by_id("native_dropdown_selected_size_name")
            drp = Select(ele)
            drp.select_by_index(1)
            time.sleep(1)
        except:
            pass
            time.sleep(1)

        try:
            prod_name = driver.find_element_by_id("productTitle").text
            priceis = (driver.find_element_by_id("priceblock_ourprice").text)[1:]
            time.sleep(1)
           
        except:
            try:
                
                prod_name = driver.find_element_by_id("productTitle").text
                priceis = (driver.find_element_by_id("priceblock_dealprice").text)[1:]

            except:
                
                prod_name = driver.find_element_by_id("productTitle").text
                priceis = (driver.find_element_by_id("priceblock_saleprice").text)[1:]

        print(prod_name)
        print(priceis)
        print("-----------------------------------")

        sheet.cell(row=r,column=1).value = prod_name
        sheet.cell(row=r,column=2).value = priceis
        r += 1

        
        id = Label(amaz,text=i,bg="#F0ECFF",fg="#0D1036",font="Airel 10",borderwidth=2,relief="groove",padx="2",pady="2")
        id.grid(row=prow,column=0,sticky=N + S + E + W)

        prod_name1 = Label(amaz,text=prod_name,pady="2")
        prod_name1.grid(row=prow,column=1,sticky=N + S + E + W)

        priceis1 = Label(amaz,text=priceis,pady="2")
        priceis1.grid(row=prow,column=2,sticky=N + S + E + W)

        prow += 1
        i+=1
        workbk.save(path)

    # INSERT
    url_txt = Entry(amaz,relief="groove")
    url_txt.grid(row=prow + 1,column=1)

    pricefrom_txt = Entry(amaz,relief="groove")
    pricefrom_txt.grid(row=prow + 1,column=2)

    priceis_txt = Entry(amaz,relief="groove")
    priceis_txt.grid(row=prow + 1,column=3)

    add_prod = Button(amaz,text="Add Product",bg="#1D2F39",fg="white",command=insert_prod,pady="2")
    add_prod.grid(row=prow + 1,column=4,sticky=N + S + E + W)

amazon()
amaz.mainloop()

curr.close()
con.close()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?