Есть ли API, который облегчает хранение / извлечение данных? - PullRequest
2 голосов
/ 09 ноября 2010

Мне очень не нравится, когда я хочу сохранить / извлечь что-то из базы данных, мне нужно выполнить команду SQL и дождаться ответа, а перед этим мне нужно создать таблицу и тщательно продумать типы данных.Код копируется по всему источнику, каждый раз, когда мне нужно поговорить с SQL, я очень устаю.

Я думаю о том, есть ли какой-нибудь простой способ этого?Например, когда я хочу вставить строку в таблицу:

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

Также мне не нужно создавать таблицу в SQL вручную, просто объявите на языке высокого уровня:

Table1 {
   colA
   colB
}

Чтобы найти конкретный элемент:

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

Или, что еще лучше, если данные хранятся в стиле XML, нам не нужно делать каждую строку одинаковыми столбцами, это свободный стиль.

Вы знаете, что я имею в виду.

Существуют ли те, которые имеют хорошую поддержку языков высокого уровня?Python?

Ответы [ 4 ]

2 голосов
/ 09 ноября 2010

Возможно, вам нужна библиотека ORM (Object-Relational Mapping), которая абстрагирует вас от базы данных, чтобы вам не приходилось писать SQL во многих случаях. Что касается вашего вопроса о Python - да, динамические языки, такие как Python и Ruby, хороши для такого рода вещей. Но библиотеки ORM доступны практически на любом языке. Вторая возможность - NoSQL.

ORM

Я приведу пару быстрых примеров в Ruby on Rails, используя его встроенный ORM, ActiveRecord. Допустим, у вас есть таблица «users» со столбцами «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 для хранения ключей / значений, eXist для хранения XML. Многие параметры перечислены в http://nosql -database.org / . Большинство из них имеют языковые привязки для динамических языков, таких как Python.

2 голосов
/ 09 ноября 2010

Я думаю, что вы говорите о каком-то инструменте объектно-реляционного отображения (ORM), что-то вроде Hibernate или Linq-to-Entities, где для вас генерируется код для выдачи SQL, и вы можете сконцентрироваться на вашей бизнес-логики.


Следует отметить, что я не знаю Python, но я уверен, что такой инструмент существует.


На самом деле, быстрый Google вызывает это:

Какие есть хорошие решения для Python ORM?

2 голосов
/ 09 ноября 2010

Предполагая, что вы действительно не хотите использовать реляционную базу данных (которая является подходящим инструментом для работы в более чем 90% случаев), взгляните на документы или базы данных "NoSQL".Некоторые примеры - MongoDB и CouchDB.

0 голосов
/ 09 ноября 2010

Вы можете использовать Oracle Berkeley DB XML . Это FOSS, он имеет API-интерфейс Python, вы можете иметь контейнеры без схемы и хранить в них любой документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...