是否有任何API使数据存储/检索变得容易?

时间:2010-11-09 12:33:20

标签: sql xml database nosql

当我想要从数据库中存储/获取内容时,我真的很讨厌,我必须发出一个SQL命令并等待响应,在此之前我需要创建表并仔细考虑数据类型。代码在整个源代码都是复制的,每次我需要与SQL交谈时我都很累。

我在考虑有什么简单的方法吗?就像我想在表格中插入一行:

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

此外,我不需要手动在SQL中创建表,只需用高级语言声明:

Table1 {
   colA
   colB
}

要查找特定元素:

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

或者,更好的是,如果数据以XML样式存储,我们不需要使每一行都是相同的列,它是自由的样式。

你知道我的意思。

是否存在具有良好高级语言支持的现有语言?蟒?

4 个答案:

答案 0 :(得分:2)

假设您真的不想使用关系数据库(在90%以上的情况下,这是正确的工作工具),请查看文档或“NoSQL”数据库。一些例子是MongoDB和CouchDB。

答案 1 :(得分:2)

我认为你所谈论的是某种对象关系映射(ORM)工具,比如Hibernate或Linq-to-Entities,其中为你生成发布SQL的代码,然后你可以集中精力关于你的业务逻辑。


应该指出我并不特别了解python,但我确信现在有这样的工具。


事实上,快速谷歌提出了这个:

What are some good Python ORM solutions?

答案 2 :(得分:2)

您可能正在寻找的是一个ORM(对象关系映射)库,它将您从数据库中抽象出来,这样您就不必在很多情况下编写SQL。关于你关于Python的问题 - 是的,像Python和Ruby这样的动态语言对这类事情有好处。但ORM库几乎可以使用任何语言。第二种可能性是NoSQL。

<强> ORM

我将在Ruby on Rails中使用其内置的ORM ActiveRecord为您提供一些简单的示例。假设您有一个'用户'表,其中包含'name'和'age'列。

插入表格:

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。

答案 3 :(得分:0)

您可以使用Oracle Berkeley DB XML。它是FOSS,它有一个Python API,你可以拥有无​​模式容器并存储你想要的任何文档。