Python Mysql multi handle 2.7.2

Real world use case for multiple instantiations of python classes, Use a Python Class more than once

At the beginning of our python program, we normally would import the library for MySql operations;

import MySQLdb

Using this library, we then use .connect() and .cursor but because we may be using the same database repeatedly, here is an alternate method of initializing our connection. First, we create a file called credentials.py in our working directory to initialize the database connection;

#!/usr/bin/python
import MySQLdb
def dbconn():
  server = 'localhost'
  user = 'MySql_user_name'
  password = 'MySql_password'
  dbase = 'MySql_database_name'
  return MySQLdb.connect(server,user,password,dbase)

This means that I can quickly connect to the same database, everytime I write a new Python program, substituting the new library for making the connection.

import credentials
handle = credentials.dbconn();

We now can look at some table rows with only four more statements;

cursor=handle.cursor()
sql="SELECT * FROM table_name WHERE 1=1"
cursor.execute(sql)
rowArray=cursor.fetchone()

Add on more statement, like ‘print rowArray’ or do whatever you need to do to look at the row. You probably will write a loop that encloses the last statement.

Just to take another approach, let’s look at our MySql Python connect without the separate credentials function;

#!/usr/bin/python
import MySQLdb
server = 'localhost'
user = 'MySql_user_name'
password = 'MySql_password'
dbase = 'MySql_database_name'
handle = MySQLdb.connect(server,user,password,dbase)

cursor=handle.cursor()
sql="SELECT * FROM table_name WHERE 1=1"
cursor.execute(sql)
rowArray=cursor.fetchone()

print rowArray

And with the credentials library;

#!/usr/bin/python
import credentials
handle=credentials.dbconn()
cursor=handle.cursor()
sql="SELECT * FROM table_name WHERE 1=1"
cursor.execute(sql)
rowArray=cursor.fetchone()

print rowArray

Next an example using your credentials.py to make a python program to read two tables,first we get the user record, and then their posts.

import credentials
userHandle=credentials.dbconn()
uSql="SELECT * FROM jos_users WHERE id=57"
cursor=userHandle.cursor()
cursor.execute(sql)
uArr=cursor.fetchone
contHandle=credentials.dbconn()
cSql="SELECT * FROM jos_content WHERE created_by=57"
cCursor=contHandle.cCursor()
cCursor.execute(cSql)
for i in cCursor.fetchone
  print i['title']

Leave a Reply

Your email address will not be published. Required fields are marked *