我希望3列有9个不同的值,比如Python中的列表.可能吗?如果不是在SQLite中,那么在另一个数据库引擎上?
您必须通过您最喜欢的方式将列表(或其他Python对象)序列化为一串字节,即"BLOB";-),(如果您想要一个非常通用的marshal
数字或字符串和c等基本值的列表是有用的)cPickle
解决方案等),并在您获取它时反序列化它.当然,这基本上将列表(或其他Python对象)作为被动"有效载荷" - 不能在WHERE
子句中有意义地使用它ORDER BY
等.
关系数据库只是不能很好地处理非原子值,并且更喜欢其他标准化备选方案(将列表的项目存储在包含"listID"列的不同表中,将"listID"放在主表中,等等).非关系数据库,虽然它们通常具有相关性的限制(例如,没有连接),但可以为您的需求提供更直接的支持.
某些关系数据库确实具有非关系扩展.例如,PostGreSQL支持一种数组数据类型(不像Python的列表那么通用--PgSQL的数组本质上是同类的).
通常,您可以通过对列表进行字符串化(使用repr()),然后保存字符串来完成此操作.在从数据库中读取字符串时,使用eval()重新创建列表.请注意,尽管您确定没有用户生成的数据可以进入该列,或者eval()存在安全风险.