如何解决字符串的字母被溢出到不同的行并添加到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 举报,一经查实,本站将立刻删除。