I have a SQL database file which contains a multitude of columns, two of which are ‘GEO_ID’ and ‘MED_INCOME’. I am trying to retrieve just the ‘MED_INCOME’ column data using the associated ‘GEO_ID’. Here is what I thought would work:
x
import sqlite3 as db
def getIncome(censusID):
conn = db.connect('census.db')
c = conn.cursor()
c.execute("SELECT 'MED_INCOME' FROM censusDbTable WHERE GEO_ID = %s" % (censusID)
response = c.fetchall()
c.close()
conn.close()
return response
id = 60014001001
incomeValue = getIncome(id)
print("incomeValue: ", incomeValue)
Which results in:
incomeValue: [('MED_INCOME',)]
I thought that I had used this method before when attempting to retrieve the data from just one column, but this method does not appear to work. If I were to instead write:
c.execute("SELECT * FROM censusDbTable WHERE GEO_ID = %s" % (censusID)
I get the full row’s data, so I know the ID is in the database file.
Is there something about my syntax that is causing this request to result in an empty set?
Advertisement
Answer
Per @Ernxst comment, I adjusted the request to:
c.execute("SELECT MED_INCOME FROM censusDbTable WHERE GEO_ID = %s" % (censusID)
Removing the quotes around the column ID, which solved the problem.