Pergunta

Eu quero experimentar / brincar com bancos de dados não relacionais, seria melhor se a solução foi:

  • portátil, o que significa que não requer uma instalação. idealmente apenas copiar-colar o diretório para algum lugar iria fazê-lo funcionar. Eu não me importo se ele requer a edição de alguns arquivos de configuração ou executando uma ferramenta de configuração para o uso pela primeira vez.
  • acessível a partir de python
  • funciona tanto em Windows e Linux

O que você pode recomendar para mim?

Essencialmente, eu gostaria de ser capaz de instalar este sistema em um servidor linux compartilhada onde eu tenho pequenos privilégios do usuário.

Foi útil?

Solução

Eu recomendo que você considere BerkelyDB com a consciência das questões de licenciamento.

Estou ficando muito cansado de pessoas recomendando BerkleyDB sem qualificação - você só pode distribuir sistemas BDB sob a GPL ou algum desconhecido e não publicamente taxa de licenciamento visível da Oracle.

Para "local" brincar onde não está em uso por terceiros, é provavelmente uma boa idéia. Basta estar ciente de que existe uma licença esperando para mordê-lo.

Este é também um lembrete de que é uma boa ideia quando pedindo recomendações de tecnologia para dizer se é ou não GPL é aceitável.

A partir minha própria pergunta sobre um banco de dados C API portátil, enquanto uma série de outros produtos foram sugeridos, nenhum dos que embarcados têm vínculos Python.

Outras dicas

Metakit é um banco de dados incorporado não-relacional interessante que suporta Python.

A instalação requer apenas copiando uma única biblioteca compartilhada e arquivos .py. Ele funciona em Windows, Linux e Mac e é open-source (MIT licenciado).

Se você está acostumado a pensar um banco de dados relacional tem que ser enorme e pesado como PostgreSQL ou MySQL, então você vai ser agradavelmente surpreendido com SQLite.

É relacional, muito pequeno, usa um único arquivo, tem vínculos Python, não necessita de privilégios extras, e funciona em Linux, Windows, e muitas outras plataformas.

Você olhou para CouchDB ? É não-relacional, os dados podem ser migrados com relativa facilidade e tem uma API Python na forma de couchdb-python . Ele tem algumas dependências bastante incomuns na forma de Spidermonkey e Erlang embora

.

Quanto a soluções python puro, eu não sei quanto tempo PyDBLite veio, mas pode valer a pena conferir, no entanto.

BerkeleyDB: (parece que há uma ligação a python API: http: // www .jcea.es / programacion / pybsddb.htm )

Você já olhou para Zope objeto de banco de dados ?

Além disso, SQLAlchemy ou camada ORM do Django torna o gerenciamento de esquema sobre SQLite quase transparente.


Editar

Comece com http: // www .sqlalchemy.org / docs / 05 / ormtutorial.html # define-e-create-a-mesa para ver como criar tabelas SQL e como eles são mapeados para objetos Python.

Embora a pergunta é vaga, seus comentários parecem indicar que você pode querer definir o Python objetos em primeiro lugar, obter os para o trabalho, em seguida, mapeá-los para objetos de esquema relacional via SQLAlchemy.

Se você está apenas indo e vindo de Python que você pode pensar em usar Pickle serializar os objetos. Não vai funcionar se você estiver olhando para usar outras ferramentas para acessar os mesmos dados é claro. Ele é construído em python, então você não deve ter quaisquer problemas privilegiados, mas não é um verdadeiro banco de dados para que ele não pode atender às necessidades de sua experiência.

Como adicionar uma referência para TinyDB aqui desde esta página está mostrando no topo de muitas pesquisas. É um banco de dados não-relacional portátil em python. Ele armazena dicts python em um arquivo json local e os torna disponíveis para ops banco de dados semelhantes a MongoDB. Ele também tem uma extensão para a porta aos comandos do MongoDB, a diferença é que em vez de trabalhar em outro servidor sistema que você vai estar operando em um arquivo JSON local.

E, ao contrário, a resposta atualmente escolhido, ele está sob uma licença aberta MIT permissiva.

Links:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top