Metadata-Version: 2.1
Name: cymysql
Version: 1.0.2
Summary: Python MySQL Driver using Cython
Home-page: https://github.com/nakagami/CyMySQL/
Author: Yutaka Matsubara
Author-email: yutaka.matsubara@gmail.com
Maintainer: Hajime Nakagami
Maintainer-email: nakagami@gmail.com
License: MIT
Keywords: MySQL
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Database
License-File: LICENSE

========
CyMySQL
========

What's CyMySQL
--------------

This package contains a python MySQL client library.

It is a fork project from PyMySQL https://pymysql.readthedocs.io/en/latest/.

CyMySQL accerarates by Cython, and support not only python 2 but also python 3.
It still can work without Cython as a pure python driver.

Documentation on the MySQL client/server protocol can be found here:
http://dev.mysql.com/doc/internals/en/client-server-protocol.html

Requirements
-------------

- Python 2.7, 3.8+
- MySQL 5.7 or higher
    
Installation
--------------

Install cython (optional)
++++++++++++++++++++++++++++++

::

   # pip install cython

Install cymysql
++++++++++++++++++++++++++++++

::

   # pip install cymysql

Install pycryptodome(depending on a situation)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++

::

   # pip install pycryptodome

If you use caching_sha2_password authentication plugin
and connect with 'not ssl and not unix_socket' you shoud install pycryptodome.
It means that if the following error occur).

::

   ModuleNotFoundError: No module named 'Crypto'



Example
---------------

Python Database API Specification v2.0
+++++++++++++++++++++++++++++++++++++++++

https://peps.python.org/pep-0249/

::

   import cymysql
   conn = cymysql.connect(host='127.0.0.1', user='root', passwd='', db='database_name')
   cur = conn.cursor()
   cur.execute('select foo, bar from baz')
   for r in cur.fetchall():
      print(r[0], r[1])

asyncio
++++++++++++++++++++++++++++++++++++++

In Python3, you can use asyncio to write the following.

This API is experimental.
If there are any mistakes, please correct them in the pull request and send.

Use connect
::

   import asyncio
   import cymysql

   async def conn_example():
       conn = await cymysql.aio.connect(
           host="127.0.0.1",
           user="root",
           passwd="",
           db="database_name",
       )
       cur = conn.cursor()
       await cur.execute("SELECT 42")
       print(await cur.fetchall())
   asyncio.run(conn_example())

Use pool
::

   import asyncio
   import cymysql

   async def pool_example(loop):
       pool = await cymysql.aio.create_pool(
           host="127.0.0.1",
           user="root",
           passwd="",
           db="database_name",
           loop=loop,
       )
       async with pool.acquire() as conn:
           async with conn.cursor() as cur:
               await cur.execute("SELECT 42")
               print(await cur.fetchall())
       pool.close()
       await pool.wait_closed()

   loop = asyncio.get_event_loop()
   loop.run_until_complete(pool_example(loop))
   loop.close()
