字符串的字母被拆分成不同的行并添加到 sqlite 数据库中

The letters of a string is being spilt into different rows and added to a sqlite database

我试图每次从列表中获取单个值并将它们单独存储在 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(此 table 的外键)并添加到数据库中。

    test = Testschritte()
    test.test_steps()
    DML = '''INSERT INTO testschritte VALUES(?,?,?)'''
    data = list(zip_longest(test.indeces,test.prop,samt.teil_num[1],fillvalue=None))
    self.curr.executemany(DML, 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, test.prop, samt.teil_num[1] ,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   |  

因为索引 5,6,7 和属性 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',None,'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, 'b', None), (7, None, None), (None, 'c', None), (None, None, None)]

如果整体使用teil_num:

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

输出:

[(5, 'a', 'Teil0'), (6, 'b', 'Teil1'), (7, None, 'Teil2'), (None, 'c', 'Teil3'), (None, None, 'Teil4')]

原因是字符串 (teil_num[1]) 被转换为列表,即:

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