我想要3列有9個不同的值,就像Python中的列表。 這可能嗎?如果不是在SQLite中,那麼在另一個數據庫引擎上?是否可以將值列表保存到SQLite列中?
回答
您必須通過您喜歡的方式將列表(或其他Python對象)序列化爲一串字節,即「BLOB」;-)(marshal
適用於基本值列表,如數字或字符串& c, cPickle
如果你想要一個非常通用的解決方案,等等),並且當你取回它時將它反序列化。當然,這基本上攜帶列表(或其他Python對象)作爲一個被動的「有效載荷」 - 不能有意義用它WHERE
條款,ORDER BY
等
關係數據庫只是不處理那麼好與非原子值,並希望其他,規範化的替代品(將列表項存儲在不同的表中,其中包括「listID」列,把「listID」放在你的主表中,等等)。非關係數據庫雖然通常對關係數據庫有限制(例如,沒有連接),但可以爲您的需求提供更直接的支持。
一些關係數據庫確實具有非關係擴展。例如,PostGreSQL支持一個array數據類型(不像Python的列表一樣普遍--PgSQL的數組在本質上是同類的)。
通常,通過對列表(使用repr())進行字符串化來完成此操作,然後保存該字符串。在從數據庫讀取字符串時,使用eval()重新創建列表。請注意,儘管您肯定沒有用戶生成的數據可以進入該列,或者eval()存在安全風險。
你的問題很難理解。這裏又是:
我想要3列有9個不同的值,就像Python中的列表。可能嗎?如果不是在SQLite中,那麼在另一個數據庫引擎上?
下面是我相信你問的是:是否有可能採取9個不同值的Python列表,並將值保存在數據庫中的特定列下?
這個問題的答案是「是」。我建議使用Python ORM庫而不是自己編寫SQL代碼。此示例代碼使用Autumn:
import autumn
import autumn.util
from autumn.util import create_table
# get a database connection object
my_test_db = autumn.util.AutoConn("my_test.db")
# code to create the database table
_create_sql = """\
DROP TABLE IF EXISTS mytest;
CREATE TABLE mytest (
id INTEGER PRIMARY KEY AUTOINCREMENT,
value INTEGER NOT NULL,
UNIQUE(value)
);"""
# create the table, dropping any previous table of same name
create_table(my_test_db, _create_sql)
# create ORM class; Autumn introspects the database to find out columns
class MyTest(autumn.model.Model):
db = my_test_db
lst = [3, 6, 9, 2, 4, 8, 1, 5, 7] # list of 9 unique values
for n in lst:
row = MyTest(value=n) # create MyTest() row instance with value initialized
row.save() # write the data to the database
運行這段代碼,然後退出Python和運行sqlite3 my_test.db
。然後裏面的SQLite運行該SQL命令:select * from mytest;
下面是結果:
1|3
2|6
3|9
4|2
5|4
6|8
7|1
8|5
9|7
這個例子從一個列表拉值,並使用值從數據庫中填充一列。它可以平凡地擴展到添加額外的列並填充它們。
如果這不是您正在尋找的答案,請更改您的請求來澄清。
P.S.本例使用autumn.util
。當前版本的「秋天」包含的setup.py
未在正確的位置安裝util.py
;你需要手工完成秋季的設置。
您可以使用更成熟的ORM,如SQLAlchemy或Django的ORM。不過,我真的很喜歡Autumn,尤其是對於SQLite。
- 1. 是否可以將結構存儲到鏈接列表中?
- 2. 是否可以在列存儲中只存儲一次列值?
- 3. Python - 是否可以將()插入列表中的列表中?
- 4. 是否可以在boost interval_map中存儲值列表?
- 5. 是否可以使用Angular 2將表單值保存到本地文件中?
- 6. 在SQLite中查詢時,是否可以將列中的值拆分爲行?
- 7. 是否可以將列表字典合併到一個列表中?
- 8. 將SQL列值保存到數組中
- 9. 是否可以同時將列添加到多個表中?
- 10. (WPF)我可以將ItemsControl保存到列表嗎?
- 11. 檢查列表中是否存在某個值以外的值
- 12. 如何將列表保存到spark中?
- 13. 是否可以將值傳遞給YAML列表?
- 14. 將Sharepoint數據保存到SQLite表中
- 15. Java - 列表中的對象是否由值或引用保存?
- 16. 在SQL中,我可以將「|」將ID列表分隔到其值的列表中?
- 17. 如何使用SQLite將值列表查詢到一列行中?
- 18. 是否可以將圖像放入可展開列表中?
- 19. 是否可以將Hadoop Counter數據保存到HDFS中?
- 20. 是否可以在iOS中將NSMutableArray保存到磁盤?
- 21. 是否可以將任意數據保存到C#文件中?
- 22. 將列表中的迭代值保存到單個對象中
- 23. 是否可以將jtable保存在mysql數據庫的單個列中?
- 24. 以列表形式保存子列表
- 25. 在Oracle中,是否可以將一列插入表中?
- 26. 當存儲在列表中時是否可以檢索泛型?
- 27. 將下拉列表選中的值保存到ViewState
- 28. C#如何將列表框中的值保存到settings.settings
- 29. 將下拉列表中的值保存到實體框架MVC
- 30. 如何使用jsoncpp將特定值保存到txt列表中?
謝謝。我想我會重新設計我的數據庫以創建一個單獨的表,因爲我需要能夠使用'WHERE'子句中的值。 – john2x 2009-10-05 09:16:30