python - SQL 空参数值
问题描述
我有一个查询,它返回数据库中单个产品的月销售额总和。查询有效。
代替“=?”的值,是否有一个空值存储在“=?”中,而不影响查询。例如,如果我输入'Espresso'作为产品,省略掉milkOptions,并输入'Small'作为尺寸,我是否可以返回所有Small Espresso的查询结果。我想要这个功能,因为我想要不同程度的特异性
import sqlite3
product = input("Enter product")
milkOptions = input("Enter milkoptions")
size = input("Enter size")
conn=sqlite3.connect("system.db")
cur=conn.cursor()
test = cur.execute("""
select count(product), strftime("%m-%Y", orderDate) as month
from customerOrders
where product = ? and milkOptions = ? and size = ?
group by product, month""",(product, milkOptions, size)).fetchall()
+---------+---------------+--------+-------------+------------+
| orderid | product | size | milkOptions | orderDate |
+---------+---------------+--------+-------------+------------+
| 1 | Espresso | Small | Soya | 2019-10-29 |
| 2 | Cappucino | Small | SemiSkimmed | 2019-10-29 |
| 3 | Cappucino | Small | SemiSkimmed | 2019-10-29 |
| 4 | Cappucino | Medium | SemiSkimmed | 2019-10-29 |
| 5 | Hot Chocolate | Medium | Coconut | 2019-10-29 |
| 6 | Hot Chocolate | Medium | Coconut | 2019-10-29 |
+---------+---------------+--------+-------------+------------+
解决方案
如果列没有 NOT NULL 约束,您可以将它们的值分配为 NULL。
if milkOptions == "":
milkOptions = "NULL"
执行此语句后插入数据库。这是一个相当不雅的解决方法,但它有效。
推荐阅读
- c - 在 C 程序中正确放置 volatile 修饰符 (Visual Studio)
- sql-server - SQL Server 2012 并发插入逻辑检查
- php - Laravel 只获取第一个相关模型
- linux - 允许 DOCKER-USER 链中的一些 IP 用于入站流量,拒绝所有其他 IP
- google-sheets - 谷歌表格 - 具有多个列的嵌入式数组
- laravel - Laravel 有计数的子查询,没有关系
- haproxy - Haproxy 多行配置
- python - Pyramid .bat 没有找到 PSERVE
- c# - 如何使用 AutoMapper 将集合从 UserModel 带到 PatientModel?
- c++ - 地图的查找功能有困难