将梳框值传递给SQL WHERE时出错

2024-09-25 04:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

def export(self):
    script = 'WellID,AFEno,AFEsuppno,AccountCode,AFEAmount FROM WellAFEDetails WHERE WellID = ?',(self.wellid_bx.get())
    df = pd.read_sql_query(script, self.con)
    writer = pd.ExcelWriter (r'C:\Users\bjenks\Desktop\ExcelOut.xlsx')
    df.to_excel(writer, sheet_name='bar')
    writer.save()

组合框值为11-21。我得到的错误是:

pandas.io.sql.DatabaseError: Execution failed on sql '('WellID,AFEno,AFEsuppno,AccountCode,AFEAmount FROM WellAFEDetails WHERE WellID = ?', '11-21')': bytes or integer address expected instead of tuple instance

我也试过了

(self.wellid_bx.cget('text'))

Tags: fromselfdfsqlscriptwherewriterbx
2条回答

文件:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sql_query.html

读取_sql_查询的第一个参数是script变量的第一部分。您需要在开头添加SELECT

第二个参数是self.con,但不是它,而是传递script变量(self.wellid_bx.get())的第二部分,这是不正确的

所以,在您的情况下执行方法是错误的。 (self.wellid_bx.get())应作为params传递给read_sql_查询。请检查文件

在Xyrus的帮助下,这就是我如何让它工作的

def export(self):
    sql = "SELECT WellID,AFEno,AFEsuppno,AccountCode,AFEAmount FROM WellAFEDetails WHERE WellID = ?"
    df = pd.read_sql_query(sql,self.con, params=([self.wellid_bx.get()]))
    writer = pd.ExcelWriter (r'C:\Users\bjenks\Desktop\ExcelOut.xlsx')
    df.to_excel(writer, sheet_name='bar')
    writer.save()

相关问题 更多 >