{ "info": { "author": "Michel Casabianca", "author_email": "casa@sweetohm.net", "bugtrack_url": null, "classifiers": [], "description": "DB Migration\n============\n\nCet outil permet de g\u00e9rer les migrations d'une base de donn\u00e9es. On doit\n\u00e9crire les scripts de migration et les disposer dans des r\u00e9pertoires par\nversion et par plate-forme. Par exemple, pour migrer la PRP vers la\nversion 1.2.3, on placera le script dans le fichier ``1.2.3/prp.sql``.\n\nLe script de migration maintient deux tables : - ``_scripts`` liste les\nscripts pass\u00e9s - ``_install`` liste les installations r\u00e9alis\u00e9es.\n\nPar cons\u00e9quent, le script sait quels scripts doivent \u00eatre pass\u00e9s pour\nmigrer vers la version cible et l'on n'a pas \u00e0 conna\u00eetre la version de\nd\u00e9part de la migration.\n\nConventions de nommage\n----------------------\n\nLes donn\u00e9es d'initialisation de la base de donn\u00e9es se trouvent dans un\nr\u00e9pertoire appel\u00e9 ``init``. Dans ce r\u00e9pertoire doit se trouver un script\nappel\u00e9 ``all.sql`` qui sera pass\u00e9 sur toutes les plateformes et qui\ncontiendra les sch\u00e9mas de la base de donn\u00e9es. On pourra y placer des\nscripts ``itg.sql``, ``prp.sql`` et ``prod.sql`` par exemple contenant\nles donn\u00e9es par environnement.\n\nLes scripts d'initialisation qui cr\u00e9ent des tables doivent auparavent\nles effacer avec une clause ``DROP TABLE IF EXISTS``. Par exemple, on\n\u00e9crira pour cr\u00e9er la table ``Aureus_Creancier`` :\n\n.. code:: sql\n\n DROP TABLE IF EXISTS `Aureus_Creancier`;\n\n CREATE TABLE Aureus_Creancier (\n id INT(10) NOT NULL DEFAULT '0',\n Libelle VARCHAR(20) NOT NULL DEFAULT '',\n id_telefact INT(10) DEFAULT NULL,\n siren VARCHAR(15) DEFAULT NULL,\n PRIMARY KEY (id)\n );\n\nPour chaque \u00e9volution du sch\u00e9ma ou des donn\u00e9es, on placera les scripts\ndans le r\u00e9pertoire de la version (de la base de donn\u00e9es ou du logiciel\nsi la base est li\u00e9e \u00e0 un logiciel sp\u00e9cifique). On placera dans ce\nr\u00e9pertoire un script ``all.sql`` pour les modifications de sch\u00e9ma ou des\ndonn\u00e9es communes \u00e0 toutes les plates-formes et des scripts ``itg.sql``,\n``prp.sql`` et ``prod.sql`` pour les donn\u00e9es sp\u00e9cifiques aux\nplates-formes.\n\nA noter qu'il n'est pas n\u00e9cessaire de pr\u00e9ciser la base de donn\u00e9e\nutilis\u00e9e dans les scripts par une clause USE car la base de donn\u00e9es\nsp\u00e9cifi\u00e9e dans le fichier de configuration est utilis\u00e9e pour ex\u00e9cuter\nles scripts.\n\nLes versions doivent \u00eatre de la forme ``X.Y.Z`` (ou un sous ensemble\n``X.Y`` ou ``X``), o\u00f9 X, Y et Z sont des entiers, sans quoi le script de\nmigration ne peut les g\u00e9rer.\n\nFichier de configuration\n------------------------\n\nVoici un exemple de fichier de configuration :\n\n.. code:: py\n\n # encoding: UTF-8\n\n # platform list\n PLATFORMS = ['itg', 'prp', 'prod']\n # default platform\n DEFAULT_PLATFORM = PLATFORMS[0]\n # platform where init is forbidden\n CRITICAL_PLATFORMS = PLATFORMS[1:]\n # charset of the database\n CHARSET = 'utf8'\n # directory where live SQL scripts (None means directory of the script)\n SQL_DIR = None\n\n # Database configuration for environments\n CONFIGURATION = {\n 'itg': {\n 'hostname': 'localhost',\n 'database': 'test',\n 'username': 'test',\n 'password': 'test',\n },\n 'prp': {\n 'hostname': 'localhost',\n 'database': 'test',\n 'username': 'test',\n 'password': 'test',\n },\n 'prod': {\n 'hostname': 'localhost',\n 'database': 'test',\n 'username': 'test',\n 'password': 'test',\n },\n }\n\nC'est un fichier Python qui comporte les propri\u00e9t\u00e9s de configuration\nsuivantes :\n\n- ``PLATFORMS`` : la liste des plates-formes \u00e0 g\u00e9rer. Typiquement\n 'itg', 'prp' et 'prod'. Les scripts de migration seront nomm\u00e9s en\n cons\u00e9quence.\n\n- ``DEFAULT_PLATFORM`` : la plate-forme par d\u00e9faut (celle qui est\n utilis\u00e9e lorsqu'aucune plate-forme n'est pass\u00e9e en ligne de\n commande). L'expression 'PLATFORMS[0]' indique que l'on prend la\n premi\u00e8re plate-forme de la liste.\n\n- ``CRITICAL_PLATFORMS`` : la liste des plates-formes sur lesquelles\n l'option '-i' qui r\u00e9initialise la base de donn\u00e9es (et efface toutes\n ses tables) est interdite. L'expression 'PLATFORMS[1:]' indique que\n l'on prend toutes les plateformes sauf la premi\u00e8re.\n\n- ``CHARSET`` : le nom du jeu de caract\u00e8res utilis\u00e9 par la base de\n donn\u00e9es ('utf8' ou 'latin1').\n\n- ``SQL_DIR`` : le r\u00e9pertoire des scripts SQL de migration. Si cette\n valeur vaut None, alors les scripts sont cherch\u00e9s dans le r\u00e9pertoire\n du script de migration.\n\n- ``CONFIGURATION`` : un dictionnaire par plate-forme indiquant pour\n chacune : l'h\u00f4te de la base, le nom de la base de donn\u00e9es, le nom de\n l'utilisateur et son mot de passe.\n\nLes lignes de code \u00e0 la fin du fichier ne servent qu'\u00e0 afficher la\nconfiguration de mani\u00e8re lisible pour le commun des mortels.\n\nScript de migration\n-------------------\n\nLe r\u00e9pertoire sql contient le scripts de migration de base de donn\u00e9es,\n``db_migration.py``, le fichier de configuration de la base de donn\u00e9es,\n``db_configuration.py`` ainsi que des scripts de migration d'exemple.\nC'est typiquement le r\u00e9pertoire que l'on trouve dans un projet pour\ng\u00e9rer la migration de la base de donn\u00e9es.\n\nPour obtenir de l'aide sur le script, taper la ligne de commande\nsuivante :\n\n.. code:: sh\n\n $ ./db_migration.py -h\n python db_migration.py [-h] [-d] [-i] [-a] [-l] [-u] [-s sql_dir] [-c config]\n [-p fichier] [-m from] platform [version]\n -h Pour afficher cette page d'aide.\n -d Affiche les scripts a installer mais ne les execute pas.\n -i Initialisation de la base ATTENTION ! Efface toutes les donnees.\n -a Pour installer les scripts de toutes les versions du repertoire.\n -l Pour installer sur la base de donnees locale en mode test.\n -u Pour ne rien afficher sur la console (si tout se passe bien).\n -s sql_dir Le r\u00e9pertoire o\u00f9 se trouvent les fichiers SQL (r\u00e9pertoire du script\n par d\u00e9faut).\n -c config Indique le fichier de configuration \u00e0 utiliser (db_configuration.py\n dans le r\u00e9pertoire du script par d\u00e9faut).\n -m from Ecrit le script de migration de la version 'from' vers 'version'\n sur la console. La valeur 'init' indique que tous les scripts de\n migration doivent \u00eatre inclus.\n platform La plate-forme sur laquelle on doit installer (les valeurs\n possibles sont 'itg', 'prp' et 'prod'). La valeur par defaut est 'itg'.\n version La version a installer (la version de l'archive par defaut).\n\n- L'option ``-d`` (pour dry run) permet de lister les scripts qui\n seront pass\u00e9s lors de la migration sans les ex\u00e9cuter r\u00e9ellement.\n\n- L'option ``-i`` intialise la base de donn\u00e9es, c'est \u00e0 dire qu'elle\n passe d'abord les scripts du r\u00e9petoire ``init``. Les tables de la\n base de donn\u00e9e seront effac\u00e9es. ATTENTION ! Cette commande peut \u00eatre\n dangereuse sur les plateformes de PRP ou PROD par exemple. Cependant,\n cette option est refus\u00e9e sur les plateformes list\u00e9es dans la\n propri\u00e9t\u00e9 ``CRITICAL_PLATFORMS`` de la configuration.\n\n- L'option ``-a`` passe les scripts de migration pour toutes les\n versions. On ne doit donc pas passer la version en param\u00e8tre avec\n cette option.\n\n- L'option ``-l`` passe les scripts en local, c'est \u00e0 dire sur la base\n MySQL sur ``localhost`` avec l'utilisateur ``test`` et le mot de\n passe ``test``. Cet utlisateur et ce mot de passe sont disponibles\n dans la configuration par d\u00e9faut de MySQL. A noter que l'utilisateur\n ``test`` doit avoir les droits sur la base de donn\u00e9e de la\n configuration.\n\n- L'option ``-u`` passe les scripts silencieusement (sauf en cas\n d'erreur).\n\n- L'option ``-s sql_dir`` indique o\u00f9 se trouvent les scripts de\n migration SQL. Par d\u00e9faut, les scripts sont cherch\u00e9s dans le\n r\u00e9pertoire du script de migration.\n\n- L'option ``-m from`` permet de g\u00e9n\u00e9rer la requ\u00eate SQL de migration de\n la version ``from`` vers la version ``version`` pass\u00e9e en ligne de\n commande. A noter que cette option est incompatble avec les options\n ``-d``, ``-l`` et ``-p``. Cette option est pratique pour mettre \u00e0\n jour la base de donn\u00e9e sur des plateformes o\u00f9 le script de migration\n ne peut pas tourner. Cependant, les tables m\u00e9ta ne sont pas mises \u00e0\n jour et l'on doit conna\u00eetre la version depuis laquelle on migre la\n base de donn\u00e9es.\n\nSi un fichier ``VERSION`` se trouve dans le r\u00e9pertoire du script, alors\nla version vers laquelle on migrera la base est extraite de ce fichier.\nDans ce cas une extension ``-SNAPSHOT`` peut se trouver \u00e0 la fin de la\nversion et elle est ignor\u00e9e lors des comparaisons.\n\nExemples\n--------\n\nPour migrer la base d'ITG vers la version 1.2.3 :\n\n.. code:: sh\n\n ./db_migration.py itg 1.2.3\n\nPour afficher les scripts \u00e0 passer pour migrer la base d'ITG vers la\nversion 1.2.3 sans les ex\u00e9cuter (dry run) :\n\n.. code:: sh\n\n ./db_migration.py -d itg 1.2.3 \n\nPour intialiser la base de donn\u00e9e et la migrer vers la version 1.2.3 :\n\n.. code:: sh\n\n ./db_migration.py -i itg 1.2.3\n\nPour migrer la base d'ITG vers la derni\u00e8re version :\n\n.. code:: sh\n\n ./db_migration.py -a itg\n\nPour installer la base d'ITG en version 1.2.3 en local :\n\n.. code:: sh\n\n ./db_migration.py -l itg 1.2.3\n\nPour g\u00e9n\u00e9rer le script de migration SQL de la base d'ITG de la version\n1.0.0 vers la version 1.2.3 :\n\n.. code:: sh\n\n ./db_migration.py -m 1.0.0 itg 1.2.3 > migration-1.0.0-1.2.3.sql\n\nInstallation du script\n----------------------\n\nPour installer le script dans votre projet, cr\u00e9er un r\u00e9pertoire d\u00e9di\u00e9 \u00e0\nla base de donn\u00e9e (par exemple ``sql``) et y recopier le contenu du\nr\u00e9pertoire sql (en particulier les scripts ``db_migration.py`` et\n``db_configuration.py``). On personalisera le fichier de configuration\n``db_configuration.py``.\n\nPlacer ensuite les scripts d'initialisation dans un r\u00e9pertoire ``init``\net ceux de migration dans des r\u00e9pertoires ``x.y.z``. Le script de\nmigration cherche les r\u00e9pertoires des scripts de migration dans son\npropre r\u00e9pertoire.\n\nOn pourra alors livrer le script de migration (avec sa configuration et\nles scripts SQL qui l'accompagnent) lors des releases. On peut m\u00eame\nautomatiser la migration des bases \u00e0 l'aide d'un script de post\ninstallation appelant la proc\u00e9dure de migration que l'on aura packag\u00e9e\ndans l'archive.\n\nPr\u00e9-requis pour faire tourner le script\n---------------------------------------\n\nPour faire tourner le script, on doit disposer des pr\u00e9-requis suivants :\n\n- Une version r\u00e9cente de python (le script a \u00e9t\u00e9 test\u00e9 avec des\n versions 2.5.2, 2.6.6 et 2.7.2).\n- La commande mysql doit \u00eatre install\u00e9e. Elle est utilis\u00e9e pour\n ex\u00e9cuter les scripts de migration.\n\nSi la plateforme ne dispose pas de ces pr\u00e9-requis, il est toujours\npossible de g\u00e9rer les migrations en g\u00e9n\u00e9rant des scripts de migration\navec l'option ``-m`` (voir l'option dans la section\n``Script de migration`` ci-dessus).\n\nTables des m\u00e9ta donn\u00e9es\n-----------------------\n\nLe script de migration g\u00e8re deux tables de m\u00e9ta donn\u00e9es dans la base :\n\nTable ``_scripts``\n^^^^^^^^^^^^^^^^^^\n\nElle contient les informations relatives au passage des scripts de\nmigration. Exemple d'une telle table :\n\n.. code:: sql\n\n +--------------+---------------------+---------+------------+---------------+\n | filename | install_date | success | install_id | error_message |\n +--------------+---------------------+---------+------------+---------------+\n | init/all.sql | 2012-04-18 14:17:20 | 1 | 1 | NULL |\n | init/itg.sql | 2012-04-18 14:17:20 | 1 | 1 | NULL |\n | 0.1/all.sql | 2012-04-18 14:17:20 | 1 | 1 | NULL |\n +--------------+---------------------+---------+------------+---------------+\n\nCette table liste les scripts pass\u00e9s (avec le chemin relatif au\nr\u00e9pertoire du script) avec leur date d'installation, le succ\u00e8s et un\n\u00e9ventuel message d'erreur. De plus elle indique la r\u00e9f\u00e9rence de\nl'installation correspondante dans la table ``_install``.\n\nTable ``_install``\n^^^^^^^^^^^^^^^^^^\n\nElle liste les migrations de la base :\n\n.. code:: sql\n\n +----+---------+------------------+------------------+---------+\n | id | version | start_date | end_date | success |\n +----+---------+------------------+------------------+---------+\n | 1 | 0.1 | 2012-04-18 14... | 2012-04-18 14... | 1 |\n | 2 | 1.0 | 2012-04-18 14... | 2012-04-18 14... | 1 |\n +----+---------+------------------+------------------+---------+\n\nLa table liste les migrations avec leur version (sous la forme\n'major.minor. debug'), les dates de d\u00e9but et de fin de migration ainsi\nque le succ\u00e8s de la migration.\n\nComment cr\u00e9er les tables des m\u00e9ta donn\u00e9es \u00e0 la main\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nLes tables de m\u00e9ta donn\u00e9es sont g\u00e9n\u00e9r\u00e9es automatiquement \u00e0 l'init\n(option -i). N\u00e9anmoins, si vous devez les cr\u00e9er \u00e0 la main, voici les\ninstructions :\n\n.. code:: sql\n\n CREATE TABLE IF NOT EXISTS _install (\n id integer NOT NULL AUTO_INCREMENT,\n version varchar(20) NOT NULL COMMENT 'Numero de version de la base',\n start_date datetime NOT NULL COMMENT 'Date de debut d''installation',\n end_date datetime COMMENT 'Date de fin d''installation',\n success boolean NOT NULL COMMENT 'Indicateur de succes de l''installation',\n PRIMARY KEY (id)\n ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Versionning de la base';\n\n CREATE TABLE IF NOT EXISTS _scripts (\n filename varchar(255) NOT NULL COMMENT 'Nom du fichier SQL installe',\n install_date datetime NOT NULL COMMENT 'Date d''installation du script',\n success boolean NOT NULL COMMENT 'Indicateur de succes de l''installation',\n install_id integer NOT NULL COMMENT 'ID de l''installation en cours',\n error_message text COMMENT 'Error message, null if script was successful',\n CONSTRAINT fk_install_id\n FOREIGN KEY (install_id)\n REFERENCES _install(id)\n ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Historique de passage des scripts';\n\nTodo\n----\n\n- Test with Python 2.6\n- Port to Python 3\n- Port on PostgreSQL", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/db_migration/", "keywords": null, "license": "Apache Software License", "maintainer": null, "maintainer_email": null, "name": "db_migration", "package_url": "https://pypi.org/project/db_migration/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/db_migration/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://pypi.python.org/pypi/db_migration/" }, "release_url": "https://pypi.org/project/db_migration/2.6.0/", "requires_dist": null, "requires_python": null, "summary": "db_migration is a database migration tool", "version": "2.6.0" }, "last_serial": 2425941, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "e23ed750f1d06746ed350d8d2391771a", "sha256": "da831c4e0f3042f1f60de56cb942eefc1499dd3c9545fcec5742a50321941938" }, "downloads": -1, "filename": "db_migration-0.0.0.tar.gz", "has_sig": false, "md5_digest": "e23ed750f1d06746ed350d8d2391771a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15360, "upload_time": "2016-05-02T11:00:55", "url": "https://files.pythonhosted.org/packages/bf/86/9e3e99f658d3cb5e4e304c10b6b6b342428557051bc47badee91ca49bb8c/db_migration-0.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "f7a475a9271c01ddd99840f48f28e570", "sha256": "51b370af1466e61537f573d18f2d17662be1aca59f32e4dbc5f97b7664946070" }, "downloads": -1, "filename": "db_migration-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f7a475a9271c01ddd99840f48f28e570", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15363, "upload_time": "2016-05-02T11:02:58", "url": "https://files.pythonhosted.org/packages/2a/de/4b4adb7852dcd0eef421a26f5b9c1d730c4378d5fe9f4d6e873999ab4ae0/db_migration-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "d8ca06f71f96c89ce228d61d9db6ac8f", "sha256": "31d9cf1c5e98436506338a4f83a43df456f458024247ef13b19d434e3bd720fe" }, "downloads": -1, "filename": "db_migration-1.0.2.tar.gz", "has_sig": false, "md5_digest": "d8ca06f71f96c89ce228d61d9db6ac8f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15033, "upload_time": "2016-05-02T12:19:29", "url": "https://files.pythonhosted.org/packages/de/ab/7e3eaf73db334bc9b532082fa01d0a3201bfec184a29f336d9b029fa9b0a/db_migration-1.0.2.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "d9d82e1fee1b86bda9cfbfe192c25e6e", "sha256": "8f955ba04cfa848f9bc8d8a525e9913c64fdbc59c69b746002c27a93647c8cc3" }, "downloads": -1, "filename": "db_migration-2.0.0.tar.gz", "has_sig": false, "md5_digest": "d9d82e1fee1b86bda9cfbfe192c25e6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16809, "upload_time": "2016-05-03T12:04:53", "url": "https://files.pythonhosted.org/packages/4a/e7/5498446c9b0a3ac9f3c6b7c5682a04bbd3af363b7aadeefc5f261c20898d/db_migration-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "3a7ed072a5eaea8dd0fb864a9f2a96cf", "sha256": "74c658be727c28fa5d0c48ecc37b2c9a05e99267a2889d269ade9fb3b2b1e24e" }, "downloads": -1, "filename": "db_migration-2.0.1.tar.gz", "has_sig": false, "md5_digest": "3a7ed072a5eaea8dd0fb864a9f2a96cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17380, "upload_time": "2016-05-17T15:45:39", "url": "https://files.pythonhosted.org/packages/c0/78/b91aa7687b0e505d482ba83d7bedb07b49d95dbeca0274ebec53f112a7e5/db_migration-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "8d1d2d26d75549d1c7b022686be1e599", "sha256": "658213d0b0ee4b1320d7f74bfd934010bf6934b048c09f151a3a86d4d5e9e41f" }, "downloads": -1, "filename": "db_migration-2.0.2.tar.gz", "has_sig": false, "md5_digest": "8d1d2d26d75549d1c7b022686be1e599", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17425, "upload_time": "2016-05-19T09:11:39", "url": "https://files.pythonhosted.org/packages/a2/0f/5d31ad5c1f3fe18558012df55fde0156d232aec1a0a010ccbfc67587741f/db_migration-2.0.2.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "32dc1a82c98abb8719d189965bf6d119", "sha256": "7886938e626e2c0fa7601a580260f9afaf821608d4faba8afea1b401b1041d5d" }, "downloads": -1, "filename": "db_migration-2.1.0.tar.gz", "has_sig": false, "md5_digest": "32dc1a82c98abb8719d189965bf6d119", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17459, "upload_time": "2016-05-19T09:29:36", "url": "https://files.pythonhosted.org/packages/21/e1/ae20723896bb38e14f1fbe8a967cd1408c4c0f7646da21e1b696defc9765/db_migration-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "d414ba72e1ae192b574704fdd0b3c09c", "sha256": "690bd981b966cfd3abacfd8d2a66d15e1d85814efcd55e994060b833ac5a0488" }, "downloads": -1, "filename": "db_migration-2.2.0.tar.gz", "has_sig": false, "md5_digest": "d414ba72e1ae192b574704fdd0b3c09c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17513, "upload_time": "2016-05-26T16:01:34", "url": "https://files.pythonhosted.org/packages/3c/80/d3138b48b5452566809984f538f39888b1482e7c6ecd2baa3bd20bfbf010/db_migration-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "3ca1aeed4afedda1de2757415a1d7424", "sha256": "d9fd5d680ff6a32a1aa2279e2918ca04787512725244d2d17c81f959673cb22a" }, "downloads": -1, "filename": "db_migration-2.2.1.tar.gz", "has_sig": false, "md5_digest": "3ca1aeed4afedda1de2757415a1d7424", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17453, "upload_time": "2016-06-02T09:59:57", "url": "https://files.pythonhosted.org/packages/31/b0/8ca19df16b825b9b60253923ed01ada1e702d4b11149f37992a17af6b8ad/db_migration-2.2.1.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "372b2cd3175fc5f5c468ffff418ad7e6", "sha256": "1a6fabdd58b0df36b4eb3b1a32bdf61a27c6224284fb40dce58d833c6de9e5bc" }, "downloads": -1, "filename": "db_migration-2.3.0.tar.gz", "has_sig": false, "md5_digest": "372b2cd3175fc5f5c468ffff418ad7e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17401, "upload_time": "2016-06-15T15:03:26", "url": "https://files.pythonhosted.org/packages/53/c6/043648c52b1a69dd6d9e1f59ef7ecdfe12aade41307002c24b9d25b7cce6/db_migration-2.3.0.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "2087cc9d578934a328b1cc77f0810cf2", "sha256": "4aae500173ea8568741baccef144d2ee52b44111342e9103f45a1ac84fe1be5f" }, "downloads": -1, "filename": "db_migration-2.4.0.tar.gz", "has_sig": false, "md5_digest": "2087cc9d578934a328b1cc77f0810cf2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16848, "upload_time": "2016-06-16T09:49:09", "url": "https://files.pythonhosted.org/packages/d5/06/d94886a5a27aa5b9d83ff1063cfa3d2e7ceec7d0e25ab683bc7416a3ce9d/db_migration-2.4.0.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "3155f0941e23291e63be584c65983bc9", "sha256": "13273d151b30b0427ce15d083c30a360c7f6eed4bf240a0ac9e377815ecf41b1" }, "downloads": -1, "filename": "db_migration-2.5.0.tar.gz", "has_sig": false, "md5_digest": "3155f0941e23291e63be584c65983bc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17461, "upload_time": "2016-07-06T10:00:45", "url": "https://files.pythonhosted.org/packages/d2/30/4491b79044fc3f09a406061eb5375d817ee0601b293c01c29f954cfe38a2/db_migration-2.5.0.tar.gz" } ], "2.5.2": [ { "comment_text": "", "digests": { "md5": "4003398d06106021f8556d5d5a9f4098", "sha256": "4656ffd859e05ab7fe55d35a065cdbe6e29ca97e4d6a9efccd21c4d95a6b576b" }, "downloads": -1, "filename": "db_migration-2.5.2.tar.gz", "has_sig": false, "md5_digest": "4003398d06106021f8556d5d5a9f4098", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17536, "upload_time": "2016-07-07T14:18:56", "url": "https://files.pythonhosted.org/packages/42/b9/6642a14f7b504dc3e66be71e1a6ba68cbd6d258000b26a6cf7514e67a5c6/db_migration-2.5.2.tar.gz" } ], "2.5.3": [ { "comment_text": "", "digests": { "md5": "e08a0d5fc6b562c25448883e8566a704", "sha256": "ede0d5199cec8d5b3495c608eafea2bab42c069e5794bf94ce9d8e0bf72f72de" }, "downloads": -1, "filename": "db_migration-2.5.3.tar.gz", "has_sig": false, "md5_digest": "e08a0d5fc6b562c25448883e8566a704", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17458, "upload_time": "2016-08-01T14:15:05", "url": "https://files.pythonhosted.org/packages/4a/bd/3f463889dbce529c2d3a2fbd7ad82cb45835795a1bbe5cb1a9aa72ef0d43/db_migration-2.5.3.tar.gz" } ], "2.5.4": [ { "comment_text": "", "digests": { "md5": "6a99a080534807e4fb14a9651f05485c", "sha256": "1fca593260fbcd6988fb70a1b7c265f65d3719450280cae320610852ba8066fa" }, "downloads": -1, "filename": "db_migration-2.5.4.tar.gz", "has_sig": false, "md5_digest": "6a99a080534807e4fb14a9651f05485c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17492, "upload_time": "2016-08-01T14:47:21", "url": "https://files.pythonhosted.org/packages/b1/ae/18075a3a2679ad8aa141786388772884f894eff9eadfb9d1f0f41a67bfad/db_migration-2.5.4.tar.gz" } ], "2.6.0": [ { "comment_text": "", "digests": { "md5": "3e99472812b230dd83523025ed3841c2", "sha256": "fae7a37636a842713fb7c0d5b7a0cc4c98e318c512a1f71aa05fd9b17352712a" }, "downloads": -1, "filename": "db_migration-2.6.0.tar.gz", "has_sig": false, "md5_digest": "3e99472812b230dd83523025ed3841c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21238, "upload_time": "2016-10-27T11:08:50", "url": "https://files.pythonhosted.org/packages/3b/2d/551f67801923985d2786ba92bc0db123d7b40ca8f9b4fc6fdca80a4f78f8/db_migration-2.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3e99472812b230dd83523025ed3841c2", "sha256": "fae7a37636a842713fb7c0d5b7a0cc4c98e318c512a1f71aa05fd9b17352712a" }, "downloads": -1, "filename": "db_migration-2.6.0.tar.gz", "has_sig": false, "md5_digest": "3e99472812b230dd83523025ed3841c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21238, "upload_time": "2016-10-27T11:08:50", "url": "https://files.pythonhosted.org/packages/3b/2d/551f67801923985d2786ba92bc0db123d7b40ca8f9b4fc6fdca80a4f78f8/db_migration-2.6.0.tar.gz" } ] }