微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

字符串的字母被溢出到不同的行并添加到sqlite数据库

如何解决字符串的字母被溢出到不同的行并添加到sqlite数据库

我试图每次从列表中获取一个值并将它们单独存储在 sqlite 数据库中。 片段如下:

curr.execute('''CREATE TABLE testschritte(indeces INT PRIMARY KEY,test_step TEXT,teil_num INT,FOREIGN KEY(teil_num) REFERENCES testfall(teil_num) ON DELETE SET NULL)''')

def db_data(self):

    samt = Protokoll()
    samt.test_case()
    DML = '''INSERT INTO testfall VALUES(?,?)'''
    data = list(zip_longest(samt.teil_num,samt.cases,fillvalue=None))
    self.curr.executemany(DML,data)
    self.conn.commit()

# Protokoll is a class created in another python file and test_case is the function I want to retreive the values from that file.

以上工作正常。 在下面,我想单独选择 samt.teil_num(此表的外键)并添加数据库中。

    test = Testschritte()
    test.test_steps()
    DML = '''INSERT INTO testschritte VALUES(?,?,?)'''
    data = list(zip_longest(test.indeces,test.prop,samt.teil_num[1],data)
    self.conn.commit()
# Testschritte is a class created in another python file and test_steps is the function I want to retreive the values from that file.

我得到的当前输出如下所示:

#Table Testschritte

test.indeces | test.prop | samt.teil_num
             |           |
    5        |    a      |    T
    6        |    b      |    e
    7        |    Null   |    i
    Null     |    c      |    l
    Null     |    Null   |    1

预期是:

test.indeces | test.prop | samt.teil_num
             |           |
    5        |    a      |    Teil1
    6        |    b      |    
    7        |    Null   |    
    Null     |    c      |    
    Null     |    Null   |    

samt.teil_num 值对应于其他列值的 5、6、7 和 a、b、c,因此,我试图将 Teil1 与所有这些值对应起来。同样,Teil2 到其他列值,但 Teil1 字母被拆分到不同的行。我知道 data = list( zip_longest (test.indeces,fillvalue=None )) 必须修改,但不确定如何修改。我尝试从 zip_longest 中指定 samt.teil_num[1] 但没有运气。

PS:samt.teil_num一个包含 Teil0、Teil1、Teil2 等值的列表,samt.teil_num[1] 应该给我 Teil1(已经给出)但是字母分成不同的行。

几天以来一直坚持这个。有人能帮我得到预期的输出吗。

此外,如果以下可能:

test.indeces | test.prop | samt.teil_num
             |           |
    5        |    a      |    Teil1
    6        |    b      |    Teil1 
    7        |    Null   |    Teil1
    Null     |    c      |    Teil1
    Null     |    Null   |  

因为 indeces 5,6,7 和 prop a,b,c 共享相同的 teil_num 值 i,e Teil1

解决方法

对于 samt.teil_num[1]:

from itertools import zip_longest
indices = [5,6,7,None,None]
prop = ['a','b','c',None]
teil_num = ['Teil0','Teil1','Teil2','Teil3','Teil4']
data = list(zip_longest(indices,prop,[teil_num[0]],fillvalue=None))
print(data)

形成的输出是:

[(5,'a','Teil0'),(6,None),(7,(None,None)]

如果你整体使用 teil_num:

from itertools import zip_longest
indices = [5,teil_num,fillvalue=None))
print(data)

输出:

[(5,'Teil1'),'Teil2'),'Teil3'),'Teil4')]

这样做的原因是 string(teil_num[1]) 被类型转换为列表,如下所示:

['T','e','i','l','1']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。