我有一个字符串列表/数组:
l = ['jack','jill','bob']
现在,我需要在slite3中为python创建一个表,使用该表可以将该数组插入名为“名称”的列中.我不希望多行,每行各有一个名字.我想要一行包含完全如上所示的数组,并且希望能够以完全相同的格式检索它.如何在数组中插入数组作为元素?在创建数据库本身时,我应该声明为数组的数据类型吗?喜欢:
c.execute("CREATE TABLE names(id text, names ??)")
我如何也插入值?喜欢:
c.execute("INSERT INTO names VALUES(?,?)",(id,l))
编辑:我是如此愚蠢.我只是意识到我可以为id输入多个条目,并使用查询来提取所有相关名称.不管怎么说,还是要谢谢你!
解决方法:
如果您以某种方式生成了一个字符串表示形式,则可以将数组存储在单个字符串字段中,例如泡菜模块.然后,当您阅读该行时,可以对其进行拨码操作. Pickle将许多不同的复杂对象(但不是全部)转换为字符串,可以恢复该对象.但是:这很可能不是您想要做的(您无法对表中的数据执行任何操作,除了选择行然后解开数组外,您将无法进行搜索.
如果您想拥有任何不同长度(或固定长度,但有许多相似事物的实例)的东西,则不希望将其放在一列或多列中.垂直而不是水平的意思是:不要关注列,而应该考虑行.对于存储具有任意数量成分的向量,表格是一个很好的工具.
从您提供的一些细节上很难解释,但是您应该考虑创建第二个表,并在第一个表的每一行中放置所有名称.您需要在第一个表中使用一些键,也可以将其用于第二个表:
c.execute("CREATE TABLE first_table(int id, varchar(255) text, additional fields)")
c.execute("CREATE TABLE names_table(int id, int num, varchar(255) name)")
这样,您仍然可以将除名字外的任何信息存储在first_table中,并将名称数组存储在names_table中,只需使用与first_table和num中相同的ID即可将索引位置存储在数组中.然后,您可以稍后通过执行类似操作来返回数组
SELECT name FROM names_table
WHERE id=?
ORDER BY num
读取first_table中任何行的名称数组.
这是在数据库中存储阵列的一种非常普通的方法.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!