kame kame - 7 months ago 21
SQL Question

Get items from a database tuple in Python

This is my code:

import pymysql

def connect():
print("connect to database")
pw = input("Password: ")
conn = pymysql.connect(host='localhost', port=3306,
user='root', passwd=pw, db='contacts')
conn.autocommit(True)
cur_ = conn.cursor()
return cur_

def show_tables(self):
print("show tables: ")
self.execute("""SHOW TABLES""")
print(self.fetchall())
return self.fetchall()

db = connect()
table_names = show_tables(db) # returns a tuple
print(len(table_names)) # output zero
table_name = table_names[0][0] # ? - todo - get item from tuple


show_tables()
return the value
(('person',),)
.
I want to get the name
person
with
table_names[0][0]
. But this doesn't work. Also the length of
(('person',),)
is 0. But why?

Edit:
I get the error:

Traceback (most recent call last):
File "/home/kame/Dropbox/code/python/scripts/database.py", line 65, in <module>
table_name = table_names[0][0] # ? - todo - get item from tuple
IndexError: tuple index out of range

Answer

It looks like show_tables(self) is returning null, a list on None object, because you can only call one time cursor.fetchall().

The solution : comment the line

print(self.fetchall())
Comments