You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
data-transport/notebooks/mysql.ipynb

3.9 KiB

None <html lang="en"> <head> </head>

Writing to MySQL

  1. Insure MySQL is actually installed on the system,
  2. There is a database called demo created on the said system

The cell below creates a dataframe that will be stored within postgreSQL

In [8]:
#
# Writing to PostgreSQL database
#
import transport
from transport import providers
import pandas as pd
_data = pd.DataFrame({"name":['James Bond','Steve Rogers','Steve Nyemba'],'age':[55,150,44]})
myw = transport.factory.instance(provider=providers.MYSQL,database='demo',table='friends',context='write',auth_file="/home/steve/auth-mysql.json")
myw.write(_data,if_exists='replace') #-- default is append
print (transport.__version__)
2.0.0

Reading from MySQL

The cell below reads the data that has been written by the cell above and computes the average age within a MySQL (simple query).

  • Basic read of the designated table (friends) created above
  • Execute an aggregate SQL against the table

NOTE

It is possible to use transport.factory.instance or transport.instance they are the same. It allows the maintainers to know that we used a factory design pattern.

In [9]:
import transport
from transport import providers
myr = transport.instance(provider=providers.POSTGRESQL,database='demo',table='friends',auth_file='/home/steve/auth-mysql.json')
_df = myr.read()
_query = 'SELECT COUNT(*) _counts, AVG(age) from friends'
_sdf = myr.read(sql=_query)
print (_df)
print ('--------- STATISTICS ------------')
print (_sdf)
           name  age
0    James Bond   55
1  Steve Rogers  150
2  Steve Nyemba   44
--------- STATISTICS ------------
   _counts   avg
0        3  83.0

The cell bellow show the content of an auth_file, in this case if the dataset/table in question is not to be shared then you can use auth_file with information associated with the parameters.

NOTE:

The auth_file is intended to be JSON formatted

In [1]:
{
    "host":"klingon.io","port":3306,"username":"me","password":"foobar",
    "database":"demo","table":"friends"
}
Out[1]:
{'host': 'klingon.io',
 'port': 3306,
 'username': 'me',
 'password': 'foobar',
 'database': 'demo',
 'table': 'friends'}
</html>