Skip to main content

Posts

Showing posts with the label connector

Using Connector/J with Python

With Python you would normally use MySQL Connector/Python or the older MySQLdb to connect from Python to MySQL, but there are more options. There are also multiple Python implementations: CPython (the main implementation), PyPy , Jython and IronPython . PyPy tries to be faster than CPython by using a Just-in-Time compiler. Jython runs on the JVM and IronPython runs on the .NET CLR . Connector/Python by default (Without the C Extension) is a pure Python implementation and can work with most if not all implementations. And for MySQLdb there is a drop-in replacement called PyMySQL , which is a pure python implementation. So there are many options already. But for at least Jython it is also possible to use a Java (JDBC) driver. But why would you use a different Python implementation? There are multiple reasons for that: Speed. PyPy can be faster and Jython has no Global Interpreter Lock (GIL) , which can allow for more concurrent execution. To access 'native' code. e.g. ca...

The performance of MySQL Connector/Python with C Extension

The source of this post is in this gist on nbviewer. After reading about the difference between MySQL Connector/Python and MySQLdb on this blog post I wondered how the C Extension option in Connector/Python would perform. If you want to run the code yourself you'll need: Jupyter/IPython, Python 3, Requests, MySQLdb, Connector/Python, Matplotlib, Pandas and MySQL. In [1]: % matplotlib notebook In [2]: import random import gzip import time import pandas as pd import matplotlib.pyplot as plt import requests import mysql.connector import MySQLdb for imp in [ mysql . connector , MySQLdb ]: print ( 'Using {imp} {version}' . format ( imp = imp . __name__ , version = imp . __version__ )) print ( 'C Extension for MySQL Connector/Python available: %s' % mysql . connector . HAVE_CEXT ) Using mysql.connector 2.1.3 Using MySQLdb 1.3.7 C Extension ...