dse é uma maneira simples e bruto de não executar consultas SQL em seqüência, mas os valores de armazenamento em cache até um determinado valor máximo foi atingido e, em seguida, executá-los usando o executemany-método. O resultado pode ser ganhos de velocidade enorme.
dse só foi testado em SQLite3 mas destinado ao uso em Django também.
Exemplo de uso:
sqlite3 importação # para fins de teste
de dse importação DelayedSqlExecutor
conn = sqlite3.connect (': memory:')
cursor = conn.cursor ()
cursor.execute ('criar tabela filedata (id INTEGER PRIMARY KEY, filepath TEXT, filename TEXT, tamanho do arquivo INTEIRO)')
d = DelayedSqlExecutor (cursor, paramtoken = '?') # usando o? paramtoken aqui para sqlite3. Deixe em branco e ele `ll usar% s como suporte por Django etc.
d.addObject ('filedata', ('id', 'caminho de arquivo', 'filename', 'tamanho do arquivo'))
for i in range (0, 999):
& Nbsp; & nbsp; & nbsp; # Acrescentando alguns dados fictícios. Observe a ausência do-campo id. Isso irá provocar inserções.
& Nbsp; & nbsp; & nbsp; #Adding O campo id provocaria uma atualização para dados ainda não no db
& Nbsp; & nbsp; & nbsp; d.addItem ('filedata', {'filepath': '/ tmp /', 'filename': 'test% s.txt'% i ", tamanho do arquivo ': i})
# No SQL tenha sido executado ainda, o limite padrão é de 1000 itens
# Adicionando outro item irá acionar a execução de instruções SQL e redefinir o d-exemplo
d.addItem ('filedata', {'filepath': '/ tmp /', 'filename': 'test% s.txt'% i ", tamanho do arquivo ': i})
# Adicionando alguns registros para atualizar
d.addItem ('filedata', {'id': 1, 'filepath': '/ tmp /', 'filename': 'testmore% s.txt'% i ", tamanho do arquivo ': 100})
# Chamando perto executará quaisquer SQLs restantes
d.close ()
# Você pode ser obrigado a chamar cometer no cursor para cometer os dados. Depende de como você configurar o cursor / conexão
O que é novo nesta versão:.
- compatibilidade com o Django 1.3 .x. Graças a John Spray para este.
O que é novo na versão 3.2.0:
- Patch da andornaut@gmail.com para ser compatível com Django 1.4.0. Patch da Herve Cauwelier para fornecer suporte para os modelos com campos primários não-Autokey.
O que é novo na versão 3.1.0:
- Patch da rassminus; Criação sql Changed de citar todas as referências aos rótulos de nomes de tabelas e colunas.
O que é novo na versão 3.0.0 Beta 2:
- Corrigido algumas coisas relatadas por Fido Garcia .
O que é novo na versão 3.0.0 Beta 1:
- As mudanças na sintaxe que não é compatível com versões anteriores , portanto, uma versão colisão. Isso eo método bulk_update bom.
- O suplemento e executar métodos foram removidos.
- modelos corrigidos têm agora uma propriedade chamada atrasada em vez de dse. Você também pode corrigir modelos específicos (novos em 2.1.0).
- Para inserir um model.delayed.insert chamada item (valores)
- Para atualizar uma model.delayed.update chamada item (valores)
- Para excluir um model.delayed.delete chamada item (id)
- Se você tem que atualizar um enorme conjunto de dados onde os valores para os campos são limitadas, você pode usar o novo model.delayed.bulk_update (valores), por exemplo metadados a partir de fotos ou arquivos de música. Graças a Cal Leeming [Simplicidade Media Ltd] para a inspiração nesta:-). Para mais informações procure mais baixo para um passo a passo mais completas sobre o happends nos bastidores.
O que é novo na versão 2.1.0:
- Pequena alteração; dse.patch_models pode agora tomar uma lista opcional de modelos para corrigir, como assim dse.patch_models (specific_models = [User, comentário]).
O que é novo na versão 2.0.0:.
- docs atualizados e exemplos
O que é novo na versão 2.0.0 RC1:
- Sem alteração no código, agora lançado usando o licença BSD modificada para ser mais compatível com Django uso de licença.
O que é novo na versão 1.0.2 / 2.0.0 Beta 9:
- Adicionado FileExport classe para facilitar o debug, o que é processado durante o teste. Grava-dados SQL para arquivo. Ver fonte / testsuite para uso.
Requisitos :
- Python
Comentários não encontrado