【问题标题】:Entering multiple lists at once in SQLi Database在 SQL 数据库中一次输入多个列表
【发布时间】:2022-01-14 03:11:23
【问题描述】:

我正在使用以下命令在 SQLi 数据库中输入列表值。

    sql_comm = "INSERT INTO Revisions (Work_ID,Rev_No,Name,Date) VALUES (?,?,?,?);"
    data = (wid,i,rev_name,rev_date)
    crsr.execute(sql_comm,data)
    sql_com2 = "INSERT INTO Revisions (Field,New_Value) VALUES (?,?)"
    for elem in zip(changes,vals):
        crsr.execute(sql_com2,elem)
    connection.commit()

这是结果输出。

Work_ID Rev_No  Name                                   Date               Field      New Value                                          
172      1      Raul Gitta <raoul_g@ware.23biz> 2021-10-21T10:08:10.653Z   null       null
null    null    null    null                                      System.Rev            2
null    null    null    null                                      System.AuthorizedDate 2021-10-20T06:42:01.32Z
null    null    null    null                                      System.RevisedDate    2021-10-21T10:08:10.653Z
null    null    null    null                                      System.ChangedDate    2021-10-20T06:42:01.32Z
null    null    null    null                                      System.Watermark      198

有没有办法避免这些null 值?

【问题讨论】:

    标签: python python-3.x sqlite insert


    【解决方案1】:

    所有空值都源于它们没有插入到适当的 INSERT 查询中。由于列表是可变的,因此对参数使用列表而不是元组可能更容易。

    类似:

    data = [wid,i,rev_name,rev_date]
    sql_com2 = "INSERT INTO Revisions (Work_ID,Rev_No,Name,Date,Field,New_Value) 
    VALUES (?,?,?,?,?,?)"
    for elem in zip(changes,vals):
        crsr.execute(sql_com2,data + list(elem))
     connection.commit()
    

    【讨论】:

    • crsr.execute(sql_comm,data) 这不需要...对吗?
    • 正确,我忘了从复制/粘贴中删除。编辑中......
    • 那么,我们不能为单值列设置 1 行,为具有列表作为值的列设置多行,而其他列的相应行保持空白?
    • 如果您想要空白而不是 null,则将架构中的默认值更改为空白或插入空白。我有点困惑,因为如果这些列 (Work_ID,Rev_No,Name,Date) 是空白的,你怎么知道哪些行是“相关的”?或者,也许您需要为字段 New_Values 添加一个新的子表(大概带有父键)。澄清问题可能会有所帮助。
    猜你喜欢
    • 2017-04-27
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    相关资源
    最近更新 更多