2016-09-07 3 views
0

Я пытаюсь выбрать из определенной строки, а затем столбца в SQL. Я хочу найти конкретную строку user_name и затем выбрать access_id из строки.не получается ожидаемый результат из sql-запроса select python

Вот мой код.

import sys, ConfigParser, numpy 
import MySQLdb as mdb 
from plaid.utils import json 

class SQLConnection: 
    """Used to connect to a SQL database and send queries to it""" 
    config_file = 'db.cfg' 
    section_name = 'Database Details' 

_db_name = '' 
_hostname = '' 
_ip_address = '' 
_username = '' 
_password = '' 

def __init__(self): 
    config = ConfigParser.RawConfigParser() 
    config.read(self.config_file) 
    print "making" 

    try: 
     _db_name = config.get(self.section_name, 'db_name') 
     _hostname = config.get(self.section_name, 'hostname') 
     _ip_address = config.get(self.section_name, 'ip_address') 
     _user = config.get(self.section_name, 'user') 
     _password = config.get(self.section_name, 'password') 
    except ConfigParser.NoOptionError as e: 
     print ('one of the options in the config file has no value\n{0}: ' + 
      '{1}').format(e.errno, e.strerror) 
     sys.exit() 


    self.con = mdb.connect(_hostname, _user, _password, _db_name) 
    self.con.autocommit(False) 
    self.con.ping(True) 

    self.cur = self.con.cursor(mdb.cursors.DictCursor) 


def query(self, sql_query, values=None): 
     """ 
     take in 1 or more query strings and perform a transaction 
     @param sql_query: either a single string or an array of strings 
      representing individual queries 
     @param values: either a single json object or an array of json objects 
      representing quoted values to insert into the relative query 
      (values and sql_query indexes must line up) 
     """ 
     # TODO check sql_query and values to see if they are lists 
     # if sql_query is a string 
     if isinstance(sql_query, basestring): 
      self.cur.execute(sql_query, values) 
      self.con.commit() 
     # otherwise sql_query should be a list of strings 
     else: 
      # execute each query with relative values 
      for query, sub_values in zip(sql_query, values): 
       self.cur.execute(query, sub_values) 
      # commit all these queries 
      self.con.commit 
     return self.cur.fetchall 


def get_plaid_token(self,username): 
     result= self.query("SELECT access_id FROM `users` WHERE `user_name` LIKE %s",[username]) 
     print type (result) 
     return result 


print SQLConnection().get_plaid_token("test") 

Я хотел бы, чтобы получить идентификатор транзакции, но по какой-то причине "результат" возвращает

> <bound method DictCursor.fetchall of <MySQLdb.cursors.DictCursor 
> object at 0x000000000396F278>> 

результат также типа "instancemethod"

+0

Что делает autocommit и ping? – slopeofhope

ответ

2

попытаться изменить эту строку:

return self.cur.fetchall 

к

return self.cur.fetchall() 

без скобок после имени метода, вы возвращаете ссылку на этот сам метод, не работает метод.

+0

haha ​​это сработало. Спасибо!! –

+0

@gordonLinoff Я приму ответ. Я должен подождать 10 минут, прежде чем смогу. –

Смежные вопросы