{ "info": { "author": "Hoc .T Do", "author_email": "hoc3010@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Topic :: Software Development" ], "description": "Python MySQL Replication Blinker\n================================\n\nFeatures\n--------\n\nThis package uses\n`mysql-replication `__\nto read events from MySQL's binlog and send to blinker's signal.\n\n- binlog action level\n- schema level\n- table level\n- row level\n\nIt will send RowsEvent only.\n\nWhenever a binlog event come, it will be dispatched into some signals:\n\n#. binlog\\_signal: 1 signal for the binlog event.\n#. schema\\_signal: 1 signal for the event's schema\n#. table\\_signal: 1 signal for the event's table.\n#. row\\_signal: 1+ signals for event's rows. 1 signal per row.\n\nSignals\n-------\n\n .. code-block::\n\n binlog event -> binlog signal -> schema signal -> table signal --> row signals\n\nSo, suppose that an event come with schema=foo, table=bar and it updated\n2 rows. Those signal will be sent:\n\n+-----------------+--------------------------+------------------------------+\n| signal | signal name | sender |\n+=================+==========================+==============================+\n| binlog signal | ``update`` | event (RowsEvent) |\n+-----------------+--------------------------+------------------------------+\n| schema signal | ``update@foo`` | event (RowsEvent) |\n+-----------------+--------------------------+------------------------------+\n| table signal | ``update@foo.bar`` | event.rows (list of array) |\n+-----------------+--------------------------+------------------------------+\n| row signal | ``update@foo.bar#row`` | row1 (array) |\n+-----------------+--------------------------+------------------------------+\n| row signal | ``update@foo.bar#row`` | row2 object (array) |\n+-----------------+--------------------------+------------------------------+\n\nConnect to signals\n------------------\n\nTo connect to a signal, you can use the signal instance or a decorator.\n\nSuppose that you need to connect to write signal on table\n*db0.table1*:\n\n .. code-block:: python\n\n from pymysqlblinker import signals\n\n tbl1_signal = signals.table_write('db0', 'table1')\n\n def subscriber1(rows, schema, table):\n pass\n\n # use connect function\n tbl1_signal.connect(subscriber1)\n\n # or use decorator\n @signals.on_table_write('db0', 'table1')\n def subscriber1(rows, schema, table):\n pass\n\nSignal publishing\n-----------------\n\nTo start publishing signals\n\n .. code-block:: python\n\n from pymysqlblinker import start_publishing\n\n start_publishing(\n 'mysql://root@localhost',\n )\n\nReplication\n-----------\n\nThis package support a method to replicate from mysql database. It\noperates by keep memory at last binlog position. By default, it save to a file.\n\nTo make it, call:\n\n .. code-block:: python\n\n from pymysqlblinker import start_replication\n\n start_replication(\n 'mysql://root@localhost',\n '/path/to/file/that/remember/binlog/position',\n )\n\nChange logs\n-----------\n\n1.2\n~~~\n\n- Add BinlogPosMemory to allow replication: replication is publishing\n with\n ability to remember last binlog position. For the first run, it will\n start at\n the end of current binlog.\n\n1.1.1\n~~~~~\n\n- Add connect\\_timeout argument to pub.start\\_publishing", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tarzanjw/python-mysql-replication-blinker", "keywords": "event replication mysql signal", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "pymysqlblinker", "package_url": "https://pypi.org/project/pymysqlblinker/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pymysqlblinker/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/tarzanjw/python-mysql-replication-blinker" }, "release_url": "https://pypi.org/project/pymysqlblinker/1.2/", "requires_dist": null, "requires_python": null, "summary": "mysql binlog to blinker signal", "version": "1.2" }, "last_serial": 1682023, "releases": { "1.1.1": [ { "comment_text": "", "digests": { "md5": "57af3f50ce2f4a8764eee4489d00d5c3", "sha256": "1e88a9454949630ffd4d8c95cf3d7d4fb4e60c54fa4ba800726fbc488a428cd1" }, "downloads": -1, "filename": "pymysqlblinker-1.1.1.tar.gz", "has_sig": false, "md5_digest": "57af3f50ce2f4a8764eee4489d00d5c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4050, "upload_time": "2015-08-17T02:18:38", "url": "https://files.pythonhosted.org/packages/26/14/7b5ab2b281853a7c487fa020546153a41e317725d58cb507e36db4a558ce/pymysqlblinker-1.1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "fce856559d9e4a153a5ef1b594a19919", "sha256": "107ffa7958f2699a63911ae54ff678903763d0f53b4f87e7341b3ec6225f8039" }, "downloads": -1, "filename": "pymysqlblinker-1.2.tar.gz", "has_sig": false, "md5_digest": "fce856559d9e4a153a5ef1b594a19919", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5780, "upload_time": "2015-08-18T09:24:36", "url": "https://files.pythonhosted.org/packages/9d/8f/47768141f56f48b7ee0d970779d94309394c4d9d1ffd0c59cfbf639dcf97/pymysqlblinker-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fce856559d9e4a153a5ef1b594a19919", "sha256": "107ffa7958f2699a63911ae54ff678903763d0f53b4f87e7341b3ec6225f8039" }, "downloads": -1, "filename": "pymysqlblinker-1.2.tar.gz", "has_sig": false, "md5_digest": "fce856559d9e4a153a5ef1b594a19919", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5780, "upload_time": "2015-08-18T09:24:36", "url": "https://files.pythonhosted.org/packages/9d/8f/47768141f56f48b7ee0d970779d94309394c4d9d1ffd0c59cfbf639dcf97/pymysqlblinker-1.2.tar.gz" } ] }