2010-11-09 66 views
2

我真的很討厭當我想從數據庫中存儲/獲取某些東西時,我必須發出一個SQL命令並等待響應,在此之前我需要創建表並仔細考慮數據類型。代碼複製到源代碼中,每當我需要與SQL交談時,我都非常疲倦。有沒有使數據存儲/檢索變得簡單的API?

我在想這有什麼簡單的方法嗎?就像當我想插入一行到表:

Table1 table; 
table.insert("bbb", "ccc", "ddd"); 
table.insert("colA":"bbb", "colB":"ccc"); 

而且我也不需要在SQL手動創建表,只需要聲明的高級語言:

Table1 { 
    colA 
    colB 
} 

要找到特定元素:

table.find({"colA" = "bbb"}); 

,或者甚至更好,如果數據存儲在XML風格,我們並不需要讓每一個行同列,它是免費的風格。

你明白我的意思了。

是否有現成的高級語言支持?蟒蛇?

回答

2

您可能正在尋找的是ORM(對象關係映射)庫,該庫從數據庫中抽象出來,因此在許多情況下不必編寫SQL。關於你關於Python的問題 - 是的,像Python和Ruby這樣的動態語言對於這類事情是很好的。但是ORM庫幾乎可以使用任何語言。第二種可能性是NoSQL。

ORM

我給你幾個簡單的例子在Ruby on Rails的,利用其內置的ORM,ActiveRecord的。假設您有一個'用戶'表'名稱'和'年齡'列。

插入到表:

user = User.new 
user.name = "Bin Chen" 
user.age = 30 
user.save 

查找記錄:

User.where(:name => "Bin Chen") 
User.where(:age => 20..40) 

的ActiveRecord甚至根據您的列創建動態方法:

User.find_by_age(30) 
User.find_or_create_by_name("Bob", :age => 20) 

指定表確實是簡單聲明。如果您有興趣,可以找到相當多的教程和截屏。

的NoSQL

如果你並不需要一個關係型數據庫,那麼可能的NoSQL適合該法案。這些通常專門用於某些類型的數據,並且通常針對性能進行了優化。示例是用於通用文檔數據庫的MongoDB,CouchDB,用於鍵/值存儲的Redis,用於XML存儲的eXist。許多選項在http://nosql-database.org/列出。其中大部分都具有動態語言(如Python)的語言綁定。

2

假設您真的不想使用關係數據庫(在90%以上的情況下這是正確的工具),請查看文檔或「NoSQL」數據庫。一些例子是MongoDB和CouchDB。

+0

是什麼關係呢?一個表可以設置引用另一個表? – 2010-11-09 12:38:34

+1

是的,這可能是NoSQL和關係數據庫之間最大的區別。維基百科有一個很好的定義:http://en.wikipedia.org/wiki/Relational_database。 – 2010-11-09 12:40:58

+0

很棒的外觀python + mongodb是我想要的。 – 2010-11-09 13:03:53

2

我認爲你所談論的是某種對象關係映射(ORM)工具,像Hibernate或Linq-to-Entities,其中發佈SQL的代碼是爲你生成的,然後你就可以專注於您的業務邏輯。


應該指出我並不特別知道python,但我確定存在這樣的工具。


事實上,快速谷歌帶來了這一點:

What are some good Python ORM solutions?

0

您可以使用Oracle Berkeley DB XML。它是FOSS,它有一個Python API,你可以有無模式的容器並存儲你想要的任何文檔。

相關問題