python - Python SQLite3函数不打印任何数据
问题描述
我创建了一个函数,该函数应该将数据库中库存水平低于 10 的所有项目发送到文本文件。但是当我按下重新排序按钮时,我没有收到任何数据。
def Database():
global conn, cursor
conn = sqlite3.connect("main_storage.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS `admin` (admin_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username TEXT, password TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS `product` (product_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, product_name TEXT, product_qty TEXT, product_price TEXT)")
cursor.execute("CREATE TABLE IF NOT EXISTS `basket` (product_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, product_name TEXT, product_qty TEXT, product_price TEXT)")
cursor.execute("SELECT * FROM `admin` WHERE `username` = 'admin' AND `password` = 'admin'")
if cursor.fetchone() is None:
cursor.execute("INSERT INTO `admin` (username, password) VALUES('admin', 'admin')")
conn.commit()
def reorder():
global items
Database()
cursor.execute("SELECT `product_name` FROM `product` WHERE `product_qty` <= 10")
items = cursor.fetchall()
print(items)
cursor.close()
conn.close()
我希望输出是我的数据库中的一组项目,例如 [44, 'motherboard', 9, 80] 其中 44 是 product_id,主板是 product_name,9 是 product_stock,80 是 product_price。我实际上得到了一个没有类似内容的数组:[]
解决方案
product_qty
被定义为TEXT列,因此<=
将在操作数的字符串值之间进行比较。这可能不会给出您期望的结果:
>>> '8' < '10'
False
使用INTEGER或REAL作为数值的列类型重新创建表,以获得所需的行为。例如:
cursor.execute("""CREATE TABLE IF NOT EXISTS `product` """
"""(product_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"""
"""product_name TEXT, product_qty INTEGER, product_price REAL)""")
推荐阅读
- batch-file - 批处理脚本将文本添加到文件中
- heapsort - 堆排序中的插入和删除
- java - 由于响应内容类型无效,Rest Template 交换失败
- reactjs - TypeScript Redux AnyAction 不接受 extraProps
- javascript - 为什么浏览器在需要的文本之前返回 undefined?
- matlab - Matlab 2016b:确定表达式的未分配符号函数
- prometheus - 如何使用 Prometheus 编写简单的 Pulsar 指标查询?
- mongodb - VPC peering下如何从外部连接到MongoDB Atlas?
- telegram-bot - 后台连续访问用户的实时位置
- docker - 如何检查两个容器是否正确链接?