Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Executing Select statement by using mysql-python gives None

I am using python-2.7 and newbie to mysql/mysql-python connector.

I just want to retrieve data simply by using following query-

SELECT d_id,d_link,d_name FROM d_details

But it gives/returns None . Following is my code-

def getdbconnection(self):

    try:

        self.cnx = mysql.connector.connect(user='abc',password='xxx',host = 'localhost',port = 'xxx', database='details',buffered=True)      

        print "Done"
        self.cursor = self.cnx.cursor()

    except MySQLdb.Error as error:      
                print "ERROR IN CONNECTION"

def selectst(self):
        try:
                    print "S E L E C T"
                    self.d_deta = self.cursor.execute("SELECT d_id,d_link,d_name FROM `d_details`")
                    print self.d_deta


        except MySQLdb.Error as error:
                            print "---------------------"""
                            print(error)
        self.cnx.commit()

AND the output is

   Done

    S E L E C T

    None

Although query works well in workbench

Help/guidance in any form is welcome.

like image 945
Pallavi Joshi Avatar asked Nov 08 '22 23:11

Pallavi Joshi


1 Answers

You should modify your code like this

Code:

def selectst(self):
    try:
          print "S E L E C T"
          self.cursor.execute("SELECT d_id,d_link,d_name FROM `d_details`")
          print  self.cursor.fetchall() # or fetchone() for one record

    except MySQLdb.Error as error:
                        print "---------------------"""
                        print(error)
    #self.cnx.commit() there is no need of commit here since we are not changing the data of the table

Notes:

  • You get None because cursor.execute is a in memory operation like list.sort()
  • The row can be got by iterating over the cursor object or using fetch*()
like image 135
The6thSense Avatar answered Nov 15 '22 07:11

The6thSense