当我想要从数据库中存储/获取内容时,我真的很讨厌,我必须发出一个SQL命令并等待响应,在此之前我需要创建表并仔细考虑数据类型。代码在整个源代码都是复制的,每次我需要与SQL交谈时我都很累。
我在考虑有什么简单的方法吗?就像我想在表格中插入一行:
Table1 table;
table.insert("bbb", "ccc", "ddd");
table.insert("colA":"bbb", "colB":"ccc");
此外,我不需要手动在SQL中创建表,只需用高级语言声明:
Table1 {
colA
colB
}
要查找特定元素:
table.find({"colA" = "bbb"});
或者,更好的是,如果数据以XML样式存储,我们不需要使每一行都是相同的列,它是自由的样式。
你知道我的意思。
是否存在具有良好高级语言支持的现有语言?蟒?
答案 0 :(得分:2)
假设您真的不想使用关系数据库(在90%以上的情况下,这是正确的工作工具),请查看文档或“NoSQL”数据库。一些例子是MongoDB和CouchDB。
答案 1 :(得分:2)
我认为你所谈论的是某种对象关系映射(ORM)工具,比如Hibernate或Linq-to-Entities,其中为你生成发布SQL的代码,然后你可以集中精力关于你的业务逻辑。
应该指出我并不特别了解python,但我确信现在有这样的工具。
事实上,快速谷歌提出了这个:
答案 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,你可以拥有无模式容器并存储你想要的任何文档。