{ "info": { "author": "Ivan Arar", "author_email": "ivan.arar@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Build Tools" ], "description": "

DB Transfer

\n\n[![PyPI version](https://badge.fury.io/py/DB-Transfer.svg)](https://badge.fury.io/py/DB-Transfer)\n\n

An easy way to manipulate data using key-value databases like Redis.
\nIt is designed to support a number of databases, but currently Redis and yaml file are supported.

\n\n

INSTALL

\n\n```bash\npip install DB-Transfer\n```\n\n

Design

\n\n

There are an adapter class for every database.
\nAfter instantiating Python Transfer using certain adapter_name, we can manipulate the
\ndata from key-value database just like dictionaries: `transfer[key] = value`

\n\n

Keys

\n\n

Keys are created using prefix, namespace and item.
\nExample: data:USERS:arrrlo:full_name
\n(data is prefix, USERS is namespace and arrrlo:full_name is item)

\n\n

\nRedis Adapter:

\n\n

Connect to Redis using environment variables

\n

Very handy when using in docker containers.

\n\n```python\nfrom db_transfer import Transfer, sent_env\n\nos.environ['REDIS_HOST'] = 'localhost'\nos.environ['REDIS_PORT'] = '6379'\nos.environ['REDIS_DB'] = '0'\n\n@sent_env('redis', 'HOST', 'REDIS_HOST')\n@sent_env('redis', 'PORT', 'REDIS_PORT')\n@sent_env('redis', 'DB', 'REDIS_DB')\nclass RedisTransfer(Transfer):\n\n def __init__(self, prefix=None, namespace=None):\n super().__init__(prefix=str(prefix), namespace=namespace, adapter_name='redis')\n```\n\n

Store data

\n\n```python\nrt = RedisTransfer()\nrt['my_key'] = 'some_string' # redis: \"SET\" \"data:my_key\" \"some_string\"\n\nrt = RedisTransfer(namespace='my_namespace')\nrt['my_key'] = 'some_string' # redis: \"SET\" \"data:my_namespace:my_key\" \"some_string\"\n\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace')\nrt['my_key'] = 'some_string' # redis: \"SET\" \"my_prefix:my_namespace:my_key\" \"some_string\"\n```\n\n

Connect to Redis using class parameters

\n\n```python\nclass RedisTransfer(Transfer):\n\n def __init__(self, prefix, namespace, host, port, db):\n super().__init__(prefix=str(prefix), namespace=namespace, adapter_name='redis')\n\n self.set_env('HOST', host)\n self.set_env('PORT', port)\n self.set_env('DB', db)\n```\n\n

Store data

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nrt['my_key'] = 'some_string' # redis: \"SET\" \"my_prefix:my_name_space:my_key\" \"some_string\"\n```\n\n

Fetch data

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nmy_var = rt['my_key'] # redis: \"GET\" \"my_prefix:my_namespace:my_key\"\n```\n\n

Delete data

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\ndel rt['my_key'] # redis: \"DEL\" \"my_prefix:my_namespace:my_key\"\n```\n\n

Other data types

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nrt['my_key_1'] = [1,2,3,4] # redis: \"RPUSH\" \"my_prefix:my_namespace:my_key_1\" \"1\" \"2\" \"3\" \"4\"\nrt['my_key_2'] = {'foo', 'bar'} # redis: \"SADD\" \"my_prefix:my_namespace:my_key_2\" \"foo\" \"bar\"\nrt['my_key_3'] = {'foo': 'bar'} # redis: \"HMSET\" \"my_prefix:my_namespace:my_key_3\" \"foo\" \"bar\"\n\nmy_var_1 = list(rt['my_key_1']) # redis: \"LRANGE\" \"my_prefix:my_namespace:my_key_1\" \"0\" \"-1\"\nmy_var_2 = set(rt['my_key_2']) # redis: \"SMEMBERS\" \"my_prefix:my_namespace:my_key_2\"\nmy_var_3 = dict(rt['my_key_2']) # redis: \"HGETALL\" \"my_prefix:my_namespace:my_key_3\"\n```\n\n

Redis hash data type

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nrt['my_key'] = {'foo': 'bar'} # redis: \"HMSET\" \"my_prefix:my_namespace:my_key\" \"foo\" \"bar\"\n\nmy_var = dict(rt['my_key']) # redis: \"HGETALL\" \"my_prefix:my_namespace:my_key\"\nmy_var = rt['my_key']['foo'] # redis: \"HGET\" \"my_prefix:my_namespace:my_key\" \"foo\"\n\nrt['my_key']['boo'] = 'doo' # redis: \"HSET\" \"my_prefix:my_namespace:my_key\" \"boo\" \"bar\"\n```\n\n

Multiple commands execution with context manager (only for set and delete)

\n\n```python\nwith RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0) as rt:\n rt['my_key_1'] = 'some_string'\n rt['my_key_2'] = [1,2,3,4]\n rt['my_key_3'] = {'foo': 'bar'}\n\n# redis:\n#\n# \"MULTI\"\n# \"SET\" \"my_prefix:my_namespace:my_key_1\" \"some_string\"\n# \"RPUSH\" \"my_prefix:my_namespace:my_key_2\" \"1\" \"2\" \"3\" \"4\"\n# \"HMSET\" \"my_prefix:my_namespace:my_key_3\" \"foo\" \"bar\"\n# \"EXEC\"\n```\n\n\n

Using iterators

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nfor key, value in iter(rt):\n # yields key and value of every key starting with my_prefix:my_namespace:\n\n\nrt['my_key'] = {...} # saving a hash data (dict)\n\nfor key, value in iter(rt['my_key']):\n # yields key and value for every HGET in my_prefix:my_namespace:my_key\n```\n\n\n

Keys

\n\n

Every key in Redis is stored in set in same Redis.
\nExample:

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nrt['key_1'] = 'value'\nrt['key_2:key3'] = 'value'\nrt['key_2:key4'] = 'value'\nrt['key_2:key_5:key_6'] = 'value'\nrt['key_2:key_5:key_7'] = 'value'\nrt['key_2:key_5:key_8'] = 'value'\n```\n\n

So, the keys are \"key_1\", \"key_2:key3\", \"key_2:key4\", \"key_2:key5:key_6\", \"key_2:key5:key_7\", \"key_2:key5:key_8\".
\nThey are not stored in one set, but different keys are stored i different sets:
\n'my_prefix:my_namespace': set({'key_1', 'key_2:keys'})
\n'my_prefix:my_namespace:key_2': set({'key_3', 'key_4', 'key_5:keys'})
\n'my_prefix:my_namespace:key_2:key_5': set({'key_6', 'key_7', 'key_8'})

\n\nThis is done this way so you can easily access data by keys fom any level recursively:

\n\n\n```python\nrt.keys()\n# > ['key_1', 'key_2:key3', 'key_2:key4', 'key_2:key_5:key_6', 'key_2:key_5:key_7', 'key_2:key_5:key_8']\n\nrt['key_2'].keys()\n# > ['key_3', 'key_4', 'key_5:key_6', 'key_5:key_7', 'key_5:key_8']\n\nrt['key_2:key_5'].keys()\n# > ['key_6', 'key_7', 'key_8']\n```\n\n\n

Real life examples

\n\n

Transfer all data from one Redis database to another:

\n\n```python\nrt_1 = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\nrt_2 = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='some_host', port=6379, db=0)\n\nfor key in rt_1.keys():\n rt_2[key] = rt_1[key]\n```\n\n

or if you want to insert data in one batch (read goes one by one):

\n\n```python\nwith rt_2:\n for key in rt_1.keys():\n rt_2[key] = rt_1[key]\n```\n\n

Transfer data from one user to another:

\n\n```python\nrt_1 = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nfor key in rt_1['arrrlo'].keys():\n rt_1['edi:' + key] = rt_1['arrrlo:' + key]\n```\n\n

Delete user from database:

\n\n```python\nrt_1 = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\n\nwith rt_1:\n for key in rt_1['arrrlo'].keys():\n del rt_1['arrrlo:' + key]\n```\n\n\n

\nYaml File Adapter:

\n\n

Initially the data from yaml file transferes from file to memory.
\nFrom there every read, write or delete runs until the sync() method
\nis called. Then the data from memory is transfered to yaml file.
\nsync() method could be called using context manager or manually.

\n\n

Define path to yaml file using environment variable

\n

Very handy when using in docker containers.

\n\n```python\nfrom db_transfer import Transfer, sent_env\n\nos.environ['YAML_FILE_PATH'] = '/path/to/yaml/file.yaml'\n\n@sent_env('yaml', 'FILE_LOCAL', 'YAML_FILE_PATH')\nclass YamlFileTransfer(Transfer):\n\n def __init__(self, prefix=None, namespace=None):\n super().__init__(prefix=str(prefix), namespace=namespace, adapter_name='yaml')\n```\n\n

Define path to yaml file using class parameter

\n\n```python\nclass YamlFileTransfer(Transfer):\n\n def __init__(self, prefix, namespace, yaml_file_path):\n super().__init__(prefix=str(prefix), namespace=namespace, adapter_name='yaml')\n\n self.set_env('FILE_LOCAL', yaml_file_path)\n```\n\n

Write and delete data

\n

Data could be written using context manager or sync() method.

\n\n```python\nyt = YamlFileTransfer(prefix='my_prefix', namespace='my_namespace', yaml_file_path='/path/')\n\nwith yt:\n yt['my_key_1'] = 'some_string'\n\nyt['my_key_2'] = 'some_string'\nyt.sync()\n\nwith yt:\n del yt['my_key_1']\n\ndel yt['my_key_2']\nyt.sync()\n```\n\n

Real life examples

\n\n

Backup user data from Redis to yaml file:

\n\n```python\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\nyt = YamlFileTransfer(prefix='my_prefix', namespace='my_namespace', yaml_file_path='/path/')\n\nfor key in rt['arrrlo'].keys():\n yt['arrrlo:' + key] = rt['arrrlo:' + key]\n\n# or (depends on how you use prefix and namespace):\n\nrt = RedisTransfer(prefix='users', namespace='arrrlo', host='localhost', port=6379, db=0)\nyt = YamlFileTransfer(prefix='users', namespace='arrrlo', yaml_file_path='/path/')\n\nfor key in rt.keys():\n yt[key] = rt[key]\n\n# or:\n\nrt = RedisTransfer(prefix='my_prefix:my_namespace', namespace='arrrlo', host='localhost', port=6379, db=0)\nyt = YamlFileTransfer(prefix='my_prefix:my_namespace', namespace='arrrlo', yaml_file_path='/path/')\n\nfor key in rt.keys():\n yt[key] = rt[key]\n\n# or:\n\nrt = RedisTransfer(prefix='my_prefix', namespace='my_namespace', host='localhost', port=6379, db=0)\nyt = YamlFileTransfer(prefix='my_prefix:my_namespace', namespace='arrrlo', yaml_file_path='/path/')\n\nfor key in rt.keys():\n yt[key] = rt['arrrlo:' + key]\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/arrrlo/db-transfer", "keywords": "database,redis,transfer,migration", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "DB-Transfer", "package_url": "https://pypi.org/project/DB-Transfer/", "platform": "", "project_url": "https://pypi.org/project/DB-Transfer/", "project_urls": { "Homepage": "https://github.com/arrrlo/db-transfer", "Source": "https://github.com/arrrlo/db-transfer" }, "release_url": "https://pypi.org/project/DB-Transfer/0.5.6/", "requires_dist": [ "click (>=6.3)", "redis (>=2.10)", "ujson (>=1.35)", "six (>=1.12.0)", "PyYAML (>=5.1.2)" ], "requires_python": "", "summary": "An easy way to fetch and store data from and store to key-value databases like Redis.", "version": "0.5.6" }, "last_serial": 5800183, "releases": { "0.3.2": [ { "comment_text": "", "digests": { "md5": "69660fc6f7d14d3720f554af14054741", "sha256": "1a2cb91870b7a9ede87f599b614589287708d013db45d2ee5756247fdfc150a3" }, "downloads": -1, "filename": "DB_Transfer-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "69660fc6f7d14d3720f554af14054741", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8928, "upload_time": "2018-04-17T13:09:10", "url": "https://files.pythonhosted.org/packages/b5/9d/3664fe70efc28644390c8b31b3c21d0463171be1674f6fe0777e8ff2295d/DB_Transfer-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "49a0acb459ac6c6003d1eb1d469b1573", "sha256": "91f043c421d4d4c5eea73201cee991ff6fd276ddb6db6308a2ba1445c63a656e" }, "downloads": -1, "filename": "DB Transfer-0.3.2.tar.gz", "has_sig": false, "md5_digest": "49a0acb459ac6c6003d1eb1d469b1573", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7946, "upload_time": "2018-04-17T13:09:11", "url": "https://files.pythonhosted.org/packages/60/4d/248eb3b696a309eb8806fcb91b3f5652dbbfcfea97ebe5b35991f5ba4ea8/DB%20Transfer-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "1f36df8a9ae46869ef3ec00a54935dc7", "sha256": "8b019870cbedff293d33f106259552ee3df99a9a55235b9f4068d48e730d2f23" }, "downloads": -1, "filename": "DB_Transfer-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "1f36df8a9ae46869ef3ec00a54935dc7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9011, "upload_time": "2018-04-17T13:26:07", "url": "https://files.pythonhosted.org/packages/04/eb/ac711ad0ad2dc35ed0275ecb3098ced22ccf2193713e8300962cb5ca63b2/DB_Transfer-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c51b456d95247950d1b4fb171547b5e9", "sha256": "98c103bb9e63434da5837afbc8b20b87706134c996a69527a80824126f24bfe2" }, "downloads": -1, "filename": "DB Transfer-0.3.3.tar.gz", "has_sig": false, "md5_digest": "c51b456d95247950d1b4fb171547b5e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7954, "upload_time": "2018-04-17T13:26:09", "url": "https://files.pythonhosted.org/packages/4f/1c/afc3d8b7567575742b67a4c1709612cba00d4fef947e4847229a17a8f3c1/DB%20Transfer-0.3.3.tar.gz" } ], "0.4.3": [ { "comment_text": "", "digests": { "md5": "7e3764511bf4a6c241a8092952c882c4", "sha256": "6cb2bb39323cba51775399071d92e652652aafd07587d4177e60c22c562ae5bf" }, "downloads": -1, "filename": "DB_Transfer-0.4.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7e3764511bf4a6c241a8092952c882c4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9184, "upload_time": "2018-04-23T11:45:18", "url": "https://files.pythonhosted.org/packages/19/84/59e36a666d98dac378151ee33959e1146e0708960e8452d122b4c62f2ed7/DB_Transfer-0.4.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8a36bdd8d4a3024986b18c5f50bbfa07", "sha256": "75587830fdc93ef82d040d320f96d43df47be93fe2af2d53e09a2fb2cfe526fb" }, "downloads": -1, "filename": "DB Transfer-0.4.3.tar.gz", "has_sig": false, "md5_digest": "8a36bdd8d4a3024986b18c5f50bbfa07", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8245, "upload_time": "2018-04-23T11:45:20", "url": "https://files.pythonhosted.org/packages/fa/61/a4c7a78b5d123a25710549b88208c2ed5319ad2c43a4eec646c8de5818f3/DB%20Transfer-0.4.3.tar.gz" } ], "0.4.4": [ { "comment_text": "", "digests": { "md5": "486ceb74a8b41e9254e7c4aefd9aec1d", "sha256": "05e345fea2190fae357c066ebd8d7caa254258d79c06925f96accb00194557c0" }, "downloads": -1, "filename": "DB_Transfer-0.4.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "486ceb74a8b41e9254e7c4aefd9aec1d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9178, "upload_time": "2018-04-23T11:48:25", "url": "https://files.pythonhosted.org/packages/9d/f7/61ddb27972a4a7160755b9ffb985b1038c739b20e38746588fccdb596f9b/DB_Transfer-0.4.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2eda55ed4b801b5414f024e6eec28f0d", "sha256": "9df1137a5d1baa7c30bd4d04dfade76ce6458d1198866ec7832cc68baf00861c" }, "downloads": -1, "filename": "DB Transfer-0.4.4.tar.gz", "has_sig": false, "md5_digest": "2eda55ed4b801b5414f024e6eec28f0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8232, "upload_time": "2018-04-23T11:48:26", "url": "https://files.pythonhosted.org/packages/ac/55/05c6b30cf069bea26dbce6ede1278232e8b5c4a6531f44b4bb4ba148e407/DB%20Transfer-0.4.4.tar.gz" } ], "0.4.5": [ { "comment_text": "", "digests": { "md5": "ceebfb324f9c5a1d88663f3cdfa43d50", "sha256": "48c3c3c185fc5b79b589e1456dc0a5fc4a4e34c7d9e7e0ec8cd1395db8433fba" }, "downloads": -1, "filename": "DB_Transfer-0.4.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ceebfb324f9c5a1d88663f3cdfa43d50", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9190, "upload_time": "2018-04-24T08:43:20", "url": "https://files.pythonhosted.org/packages/54/0e/d94debd3b90b88c2d9c458d876ac07ea9a3bbfa1f5875a98f4d515842dd5/DB_Transfer-0.4.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb2b399e409591ddbd64b15f48928f87", "sha256": "cfdc24beb494032d8c0b66b9391c42e82199f233d2893232d5a1527b08e5792e" }, "downloads": -1, "filename": "DB Transfer-0.4.5.tar.gz", "has_sig": false, "md5_digest": "fb2b399e409591ddbd64b15f48928f87", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8236, "upload_time": "2018-04-24T08:43:21", "url": "https://files.pythonhosted.org/packages/7f/cb/007067e2c63cf0e76f42976a206bf04d981c8a14e7ecbeb7b5e790ec6960/DB%20Transfer-0.4.5.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "bbada280787b93b1666f11aa490357e7", "sha256": "e513cb84aac66a21b785ccdbdbd264c9d30af1710290df9fd41354328ede1039" }, "downloads": -1, "filename": "DB_Transfer-0.5.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bbada280787b93b1666f11aa490357e7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11247, "upload_time": "2018-05-09T10:56:35", "url": "https://files.pythonhosted.org/packages/68/3e/979bdaaf2f7b43e85edda2006462d14d64b33a8f7d41f175e2b55a933065/DB_Transfer-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fc67231e4cfdb89f321f8b1c9755755d", "sha256": "c8fa682371107f52fced42ad769cbef440772e72191f79d9fd4241e4df8a8e10" }, "downloads": -1, "filename": "DB Transfer-0.5.0.tar.gz", "has_sig": false, "md5_digest": "fc67231e4cfdb89f321f8b1c9755755d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9804, "upload_time": "2018-05-09T10:56:37", "url": "https://files.pythonhosted.org/packages/09/04/39eba4ec9575bfedcc56672e2ed9c3ee6140df84f9f51ae8420ba3a8acc1/DB%20Transfer-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "31802f49034c353d8f3bc97939341874", "sha256": "e9cfd6e65da3fa374ee6887475bae24e89e27d4cc94f76e063e7d018af1de312" }, "downloads": -1, "filename": "DB_Transfer-0.5.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "31802f49034c353d8f3bc97939341874", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11274, "upload_time": "2018-05-16T18:07:24", "url": "https://files.pythonhosted.org/packages/f9/53/0b9982f99de692d241738e577cb43e18dea8d2803011444f69befcda6755/DB_Transfer-0.5.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71daf59a1707f02d59239c077fd3113b", "sha256": "7b01d76507c529d45b9b3b8f113ecce2dcf00c1ecc18c805746139802cac54db" }, "downloads": -1, "filename": "DB Transfer-0.5.1.tar.gz", "has_sig": false, "md5_digest": "71daf59a1707f02d59239c077fd3113b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12308, "upload_time": "2018-05-16T18:07:25", "url": "https://files.pythonhosted.org/packages/37/6b/8b11ea351b901313f9c2d39d7ea6029d67c40a96a4f3f126e88d1f4280d7/DB%20Transfer-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "16a980cf1f0930e9dd88ba9871e3ee01", "sha256": "14127f02ad4a45ee1c9e4d1a07bfed0c55f41450034afdde0293b75c690fc458" }, "downloads": -1, "filename": "DB_Transfer-0.5.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "16a980cf1f0930e9dd88ba9871e3ee01", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11279, "upload_time": "2019-01-09T09:02:09", "url": "https://files.pythonhosted.org/packages/d9/b1/430cb09a0958317e8bdef19673bcd0b15cedfc59177886773af4fe6ca68e/DB_Transfer-0.5.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c31996d13c118d37ace8c15e1a440035", "sha256": "091b6b367fd13e8fa11607f87b8852342e3b132514a3dc45559a776b194a0ff0" }, "downloads": -1, "filename": "DB Transfer-0.5.2.tar.gz", "has_sig": false, "md5_digest": "c31996d13c118d37ace8c15e1a440035", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10048, "upload_time": "2019-01-09T09:02:11", "url": "https://files.pythonhosted.org/packages/ac/fd/f04694b4ad2b4109f48835416ff549b55ebc684cfddbdade80db65d0a617/DB%20Transfer-0.5.2.tar.gz" } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "ba38b46f4111a6f7b23a91db98aa82df", "sha256": "632d3b1c328fc51440b7a2fc7afb8f9e26a17551a9b859dc084c7fe0dd60b624" }, "downloads": -1, "filename": "DB_Transfer-0.5.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ba38b46f4111a6f7b23a91db98aa82df", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11279, "upload_time": "2019-09-06T12:22:49", "url": "https://files.pythonhosted.org/packages/21/5c/6ba325f1eb4b66c536c048da3426e9e4d7982346a252b174e0882cadd4ec/DB_Transfer-0.5.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a552f7b01f8254741323b3f02f745ee9", "sha256": "eb8c01efdc3ad2287b6d458c2d9823b2d8bd9418feaa017a1e9dfd47a1ade873" }, "downloads": -1, "filename": "DB Transfer-0.5.3.tar.gz", "has_sig": false, "md5_digest": "a552f7b01f8254741323b3f02f745ee9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9983, "upload_time": "2019-09-06T12:22:51", "url": "https://files.pythonhosted.org/packages/0e/a4/afe15fefbb1f123cfeb899b0b2cecfb7f39f051393859bdc2797886499af/DB%20Transfer-0.5.3.tar.gz" } ], "0.5.4": [ { "comment_text": "", "digests": { "md5": "d012dddec92cb5f4288137896967549d", "sha256": "0988388bdac6865f813ca7bc9a49ccf9bad26d886e6e1b3a2ccaa9808952df3c" }, "downloads": -1, "filename": "DB_Transfer-0.5.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d012dddec92cb5f4288137896967549d", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11287, "upload_time": "2019-09-06T14:26:27", "url": "https://files.pythonhosted.org/packages/c5/0d/2fd97dd9b8a4380150070d51d6c7c9ca136a55c1d9c772d11659291a259a/DB_Transfer-0.5.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c9e09e9384faf401de90179344faf71", "sha256": "635799c5250f33a053f379ccf89358ccbb5d3d2ba9405a11685421453bffe76c" }, "downloads": -1, "filename": "DB Transfer-0.5.4.tar.gz", "has_sig": false, "md5_digest": "7c9e09e9384faf401de90179344faf71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9996, "upload_time": "2019-09-06T14:26:29", "url": "https://files.pythonhosted.org/packages/61/ef/f240c381b8d29e2731140bcaacfde7fbf6d2b10ecbbd175818252f6af3aa/DB%20Transfer-0.5.4.tar.gz" } ], "0.5.5": [ { "comment_text": "", "digests": { "md5": "c898aecdbbe5d8c4af7129a99f2ee0a8", "sha256": "6ce3cce4b4782b4a5806ca4f0fd816c0a1fe40c043f04b68ce74fe81ea4d2d1f" }, "downloads": -1, "filename": "DB_Transfer-0.5.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c898aecdbbe5d8c4af7129a99f2ee0a8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11287, "upload_time": "2019-09-08T01:03:13", "url": "https://files.pythonhosted.org/packages/0d/f7/f28ed645bb33c67bf45492df32138b995936a1b7c8d3823b1cae7b6b1a3e/DB_Transfer-0.5.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b75de77d064321371a5b8264b9ba8ed9", "sha256": "f3c03b4b1953b4790b4812a4008daeb06c447e31e9f4a343ad115d7e0b15a9bb" }, "downloads": -1, "filename": "DB Transfer-0.5.5.tar.gz", "has_sig": false, "md5_digest": "b75de77d064321371a5b8264b9ba8ed9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9993, "upload_time": "2019-09-08T01:03:14", "url": "https://files.pythonhosted.org/packages/b0/9d/3f2f4876e23d615464289183c1d17555950e5232e89abbeddd998304636f/DB%20Transfer-0.5.5.tar.gz" } ], "0.5.6": [ { "comment_text": "", "digests": { "md5": "1ad9afda44c4b8f8e64ac8f90ee895af", "sha256": "0368382cd0fa62c357c6888edd909ca4c3bf2821483516ced42f7399e9f0d4fc" }, "downloads": -1, "filename": "DB_Transfer-0.5.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ad9afda44c4b8f8e64ac8f90ee895af", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11278, "upload_time": "2019-09-08T18:53:50", "url": "https://files.pythonhosted.org/packages/a4/4d/f5455812df4a3f7d39475d156d87f2fecba3b095401ea0151b14929c3ba9/DB_Transfer-0.5.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fda61cb93a8435b5b0affc4c18fad3cc", "sha256": "11fec1e781d97f3dc9ffa51ef74d8718c30fff4458302ec656658337cd68be7a" }, "downloads": -1, "filename": "DB Transfer-0.5.6.tar.gz", "has_sig": false, "md5_digest": "fda61cb93a8435b5b0affc4c18fad3cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9981, "upload_time": "2019-09-08T18:53:52", "url": "https://files.pythonhosted.org/packages/33/1c/e4c75fb2ae919cabb15b02401979b9c45384aae2907716a885cd2e32ecd7/DB%20Transfer-0.5.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1ad9afda44c4b8f8e64ac8f90ee895af", "sha256": "0368382cd0fa62c357c6888edd909ca4c3bf2821483516ced42f7399e9f0d4fc" }, "downloads": -1, "filename": "DB_Transfer-0.5.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ad9afda44c4b8f8e64ac8f90ee895af", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11278, "upload_time": "2019-09-08T18:53:50", "url": "https://files.pythonhosted.org/packages/a4/4d/f5455812df4a3f7d39475d156d87f2fecba3b095401ea0151b14929c3ba9/DB_Transfer-0.5.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fda61cb93a8435b5b0affc4c18fad3cc", "sha256": "11fec1e781d97f3dc9ffa51ef74d8718c30fff4458302ec656658337cd68be7a" }, "downloads": -1, "filename": "DB Transfer-0.5.6.tar.gz", "has_sig": false, "md5_digest": "fda61cb93a8435b5b0affc4c18fad3cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9981, "upload_time": "2019-09-08T18:53:52", "url": "https://files.pythonhosted.org/packages/33/1c/e4c75fb2ae919cabb15b02401979b9c45384aae2907716a885cd2e32ecd7/DB%20Transfer-0.5.6.tar.gz" } ] }