{ "info": { "author": "Max Ischenko", "author_email": "ischenko@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Topic :: Software Development" ], "description": "sqlturk\n=======\n\nOverview\n--------\n\nThis tool helps you to keep track and evolve your database schema (SQL).\n\nIt works like this. Whenever you make changes to the database schema you put them into a \"migration\" - simply an .sql file with a sequence of SQL statements. Sqlturk keeps track of which migrations have been applied and runs them in a guaranteed order. \n\nDesign\n------\n\nThere are plenty of tools to approach the problem of database schema\nmigration. Here is how sqlturk is different:\n\n* **one-way migrations**. There is no way to \"rollback\" a migration. In my\n experience, \"downgrade\" scripts are almost never used yet writing them adds considerable burden onto the developer. Their presense may add a false sense of security -- since they used so rarely there is a big chance they will not work properly anyway.\n\n* **Python-agnostic**. Sqlturk operates in terms of SQL DDL. It does not work in terms of SQLAlchemy ORM models or Django's and thus it can be used in a much wider context. Plain SQL also means that a competent DBA who knows nothing about Python can author these scripts. Or they could be generated automatically by another tool.\n\n* **no magic**. I wanted a tool that works in an obvious, easy-to-understand way. Changing database schema can have big consequences so it is important to be able to see what's going on. \n\nNot convinced? A couple of more sophisticated tools: `Django South `_ and `sqlalchemy-migrate `_.\n\nAPI usage\n---------\n\nShort example::\n\n >>> from sqlturk.migration import MigrationTool\n >>> tool = MigrationTool('sqlite:///:memory:', migration_dir='testmigrations')\n >>> tool.install() # create a database table to track schema changes\n >>> tool.find_migrations()\n ['1_foobar', '2_foobar_data', '10_foobar_delete']\n >>> tool.run_migrations()\n >>> tool.find_migrations() # check that all migrations have been applied\n []\n\nExample migration scripts can be found\n`in the sqlturk' source `_. Sqlturk uses SQLAlchemy syntax to specify database connection string, see its `documentation `_ for details.\n\n.. vim:set ft=rst tw=0:", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/msm2e4d534d/sqlmigrate", "keywords": "sql database schema migration evolution migrate sqlalchemy", "license": "Apache License, Version 2.0", "maintainer": null, "maintainer_email": null, "name": "sqlmigrate", "package_url": "https://pypi.org/project/sqlmigrate/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/sqlmigrate/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://bitbucket.org/msm2e4d534d/sqlmigrate" }, "release_url": "https://pypi.org/project/sqlmigrate/1.0.0/", "requires_dist": null, "requires_python": null, "summary": "Simple raw-SQL database schema migration tool.", "version": "1.0.0" }, "last_serial": 1679644, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "61f921d2a65ecb2351c0500f15f80b39", "sha256": "dd66edd28411faa0a8647465322478558d0b0a5cb9f9d05aef3e73b21cd9940f" }, "downloads": -1, "filename": "sqlmigrate-1.0.0.win32.exe", "has_sig": false, "md5_digest": "61f921d2a65ecb2351c0500f15f80b39", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 205109, "upload_time": "2015-08-16T19:11:23", "url": "https://files.pythonhosted.org/packages/31/e7/78f6aa4eaa6d767d4c6976db6b4059c45348559c720fd6a0cfc2557427a1/sqlmigrate-1.0.0.win32.exe" }, { "comment_text": "", "digests": { "md5": "059467ed1e5e1bad9a60dbb7d9b00243", "sha256": "1dcd7c605d35cee21f8ed0bd58a356ef375e3a55a8475d6698332fc3e2f4e710" }, "downloads": -1, "filename": "sqlmigrate-1.0.0.zip", "has_sig": false, "md5_digest": "059467ed1e5e1bad9a60dbb7d9b00243", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8683, "upload_time": "2015-08-16T19:11:17", "url": "https://files.pythonhosted.org/packages/27/f8/f1918e278a27db7dfe0d273ac6e52a0b849c96d246af1cf0c4d1e0669f23/sqlmigrate-1.0.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "61f921d2a65ecb2351c0500f15f80b39", "sha256": "dd66edd28411faa0a8647465322478558d0b0a5cb9f9d05aef3e73b21cd9940f" }, "downloads": -1, "filename": "sqlmigrate-1.0.0.win32.exe", "has_sig": false, "md5_digest": "61f921d2a65ecb2351c0500f15f80b39", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 205109, "upload_time": "2015-08-16T19:11:23", "url": "https://files.pythonhosted.org/packages/31/e7/78f6aa4eaa6d767d4c6976db6b4059c45348559c720fd6a0cfc2557427a1/sqlmigrate-1.0.0.win32.exe" }, { "comment_text": "", "digests": { "md5": "059467ed1e5e1bad9a60dbb7d9b00243", "sha256": "1dcd7c605d35cee21f8ed0bd58a356ef375e3a55a8475d6698332fc3e2f4e710" }, "downloads": -1, "filename": "sqlmigrate-1.0.0.zip", "has_sig": false, "md5_digest": "059467ed1e5e1bad9a60dbb7d9b00243", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8683, "upload_time": "2015-08-16T19:11:17", "url": "https://files.pythonhosted.org/packages/27/f8/f1918e278a27db7dfe0d273ac6e52a0b849c96d246af1cf0c4d1e0669f23/sqlmigrate-1.0.0.zip" } ] }