python - SQL:在不创建新记录的情况下将 Update 与 Select 和 Insert 一起使用以插入数据?这是可能的?备择方案?
问题描述
使用插入和选择,通过 cursor.executescript,我将表的列数据复制到新表中。一切正常。使用 SQLite。
然而,问题是创建了“新”行记录(图片中最后一个红色行)。相反,我想在已经存在的记录的列中插入(复制)数据,所以都在同一行中。我想我需要上传而不是插入,但我不知道如何(使用上传)将表列的数据复制到新表中。例如,我想在从 1 到 20 的所有记录中都有数据“1”,而不是在第 21 行(第 21 行不能存在)。我能怎么做?你能帮我写代码吗?谢谢
cursor.executescript("""
INSERT INTO ARCHIVIO_Squadre_Campionato (ID_Campionato) #new table in photo
SELECT ID_Campionato FROM ARCHIVIO_Campionati #old/other table
WHERE Nome_Campionato='Serie A'; #column name of old/other table
""")
con.commit()
更新:对于更精确的问题,我添加了两个 sql 表:
CREATE TABLE "ARCHIVIO_Campionati" (
"ID_Campionato" INTEGER, #example: 1
"Nome_Campionato" INTEGER, #example: Serie A
PRIMARY KEY("ID_Campionato" AUTOINCREMENT)
);
CREATE TABLE "ARCHIVIO_Squadre_Campionato" (
"ID_Sq" INTEGER,
"Nome_Squadra" TEXT,
"ID_Campionato" INTEGER,
);
解决方案
在 中插入这 20 行后ARCHIVIO_Squadre_Campionato
,您必须更新表而不插入新行:
UPDATE ARCHIVIO_Squadre_Campionato
SET ID_Campionato = (
SELECT ID_Campionato
FROM ARCHIVIO_Campionati
WHERE Nome_Campionato='Serie A'
)
WHERE ID_Campionato IS NULL;
该WHERE
子句并不是真正需要的,因为所有行(在表的当前状态下)在列中都有 NULL,ID_Campionato
但在随后调用相同查询的不同值(例如“Serie B”行)中将需要它。
推荐阅读
- javascript - 向下滚动时,容器 Div 溢出被剪裁
- haskell - 具有模式匹配的 Haskell `where`
- java - Java,您如何有效地分块大型输入流?
- javascript - 反应是否有可能从另一个孩子身上实现一个孩子的触发功能?
- python - 如何将 numpy 数组分解为列表并创建字典?
- javascript - 是否可以覆盖导出?
- java - 等到 ActionListener 完成执行以收集数据
- c# - 声明一个引用属性 Non-Nullable?
- html - 完成学位项目的地理定位实时无人机
- nativescript - 通过 nativescript tns 命令发布 iOS 时出错