2010-07-16 8 views
2

Je travaille sur un projet qui doit supporter à la fois Python 2.5 et 2.6, et utilise sqlite3. J'aimerais pouvoir sauvegarder la base de données depuis le programme.Sauvegarde de la base de données sqlite3 dans Python 2.5

Il semble y avoir deux façons de procéder: créer une nouvelle base de données dans sqlite3 et déplacer toutes les données, ou simplement copier le fichier de base de données sur le disque. Mon instinct (et une partie de ce que je voudrais tester ici) est qu'il est plus sûr de copier les données dans le système, car il s'assurera que je n'essaie pas de copier un fichier dans un état instable. Alors que je pourrais protéger contre de nombreuses erreurs de base, la protection contre toutes les erreurs possibles dans la copie du fichier serait un défi.

Cependant, comme je suis en charge Python 2.5, je n'ai pas iterdump() à ma disposition, la création de la sauvegarde dans le programme prendrait du temps (ce qui rend la copie de fichier tentant).

Quels sont les avantages et les inconvénients de la copie directe du fichier? Existe-t-il un moyen facile dans 2.5 de copier toute la base de données d'une manière similaire à iterdump() de 2.6?

Répondre

0

Je prends une photo dans le noir, ne connaissant pas Python mais connaissant SQLite3.

Pros

  • sauvegarde Safe, les bases de données SQLite sont des fichiers simples
  • rétrocompatible pour votre fonction iterdump() manquante.

Contre

  • taille de base de données peut interdire la duplication.
3

La copie d'un fichier SQLite3 actuellement utilisé peut fonctionner dans 99% des cas, but it's not safe, comme je l'ai appris à la dure. Je veux dire, vous pouvez réellement copier le fichier DB lui-même, mais vous devez être absolument sûr que tous les descripteurs de fichiers dans le fichier DB sont fermés, sinon vous risquez précisément la situation qui vous préoccupe.

est ici deux options:

  1. Dump utilisant a system call to the command line

Cela tombe bien, car il dépotoirs la base de données dans un fichier avec un ensemble d'instructions SQL qui pour vous reconstruisez à partir de zéro, ET le compresse en utilisant gzip en une seule étape. Vous sauvegardez ensuite une copie du fichier .gz résultant et vous avez terminé.

  1. Dump utilisant le sqlite3 command line shell
Questions connexes