python - SQLite 准备好的查询与未准备的查询 - 不同的结果(PySide,python)

标签 python sqlite pyside

Python、PySide、SQLite:

我可能错过了一些明显的东西,但我用相同的(或者我认为的)查询得到了不同的结果。我应该看到未准备的查询的结果(据我所知)。

感谢您提供的所有帮助!

准备:

    filteringCategory = "store"
    from_date = '2014-03-01'
    to_date = '2014-03-29'
    query.prepare("SELECT s.name AS store, SUM(price) AS total_price FROM expenses AS e JOIN expenses_to_store AS ets ON e.expenses_id = ets.expenses_id JOIN store AS s ON ets.store_id = s.store_id WHERE date BETWEEN :from_date AND :to_date GROUP BY :group")
    query.bindValue(":from_date", from_date)
    query.bindValue(":to_date", to_date)
    query.bindValue(":group", filteringCategory)
    query.exec_()

未准备:

query.exec_("SELECT price, s.name AS store, SUM(price) AS total_price FROM expenses AS e JOIN expenses_to_store AS ets ON e.expenses_id = ets.expenses_id JOIN store AS s ON ets.store_id = s.store_id WHERE date BETWEEN '2014-03-01' AND '2014-03-29' GROUP BY store")

query result

最佳答案

问题可能出在以下行:

    query.bindValue(":group", filteringCategory)

它正在尝试绑定(bind)一个不是的参数。我认为不允许绑定(bind)列名或表名,因为这会改变 SQL 语句的实际结构。

相反,您需要执行以下操作:

    "SELECT ... :from_date AND :to_date GROUP BY %s" % filteringCategory

关于python - SQLite 准备好的查询与未准备的查询 - 不同的结果(PySide,python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22361937/

相关文章:

python - 如何在python中为套接字设置发送缓冲区大小

python - 如何获取列表中最不常见的元素?

qt - 如何获取给定小部件的所有信号集?

python - 在 Pyside : QProcess. write(u'Test') 返回 0L

python - 未能在qt快速应用程序中构建图形管道状态

python - 在 csv 文件中查找模式

python - 传递参数时如何调用保留引号?

python - 收到错误 AttributeError : '_tkinter.tkapp' object has no attribute 'getitems'

python - 将 pandas 数据框插入 SQLite 表/使用数据框更新表

javascript - javascript 函数上的 HTML 按钮调用不适用于 sqlite 数据库