字符串的字母被拆分成不同的行并添加到 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']
我试图每次从列表中获取单个值并将它们单独存储在 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']