sql - 为什么 INSERT 在 Python SQLite3 中似乎不起作用?
问题描述
所以我的问题如下:我似乎无法将值插入到None
之前的行中。假设有 5 列:a、b、c、d、e。e 是主键(设置为autoincrement
)。首先,我将 3 列(a、b、c)的值插入到行中。是在插入期间计算的autoincrement
,因此自动插入 e 的值。此时,d 的值为None
。然后我使用与计算的主键连接的字符串插入到我之前未插入的行列中:d。但是,这个最终插入似乎不起作用。
在第一次插入之后,列 d 的值显示None
在该行中(应该如此)。但None
即使在第二次插入之后仍然存在。
这是一个片段:
c.execute(f'''INSERT INTO table(a, b, c) VALUES(?,?,?)''', (val_a, val_b, val_c))
c.execute(f'''SELECT * FROM table WHERE b = ('{val_b}')''')
val_d = 'string' + str(primary_key_of_previously_inserted_row) //accessed via c.fetchall()
c.execute(f'''INSERT INTO table(d) VALUES('{val_d}')''')
conn.commit()
c.execute(f'''SELECT * FROM table WHERE b = ('{val_b}')''')
print(c.fetchall()) // this is where it prints the None which still persists after the second insert
conn.commit()
这里似乎有什么问题?
解决方案
我建议你尝试 Select c.execute(f'''SELECT * FROM table WHERE e = ('{primary_key_of_previously_inserted_row}')''')
因为 e 是您的主要领域,并且是独一无二的。您可能有一条记录,其中 val_b 在您的表中不是唯一的。在这种情况下,它可能正在写入找到的第一个实例?
推荐阅读
- regex - 当我输入“disp VARIABLE attr stixpaths limit INT”时,正则表达式没有按预期工作
- c++ - 检查是否满足密码条件,但 Pearson Revel 说错了
- reactjs - React 正确渲染元素
- sorting - 我需要一个逻辑算法来对程序中的足球联赛数学进行排序
- azure-devops - 在新的测试计划视图中在哪里查看附件 - azure devops
- python - 在 Python 中突出显示维恩图的扇区
- apache-spark - 在远程服务器中使用 python 驱动程序提交 Livy Pyspark 作业
- mysql - MySQL - 一起使用 MAX 和子查询?
- javascript - 在对象中包含的多个数组中搜索值(Javascript)
- botframework - 如何使用机器人作曲家动态配置 HTTP 请求的正文部分