没有得到预期的结果从sql查询选择python
问题描述:
我想从SQL中的特定行然后选择列。 我想找到一个特定的user_name行,然后从行中选择access_id。没有得到预期的结果从sql查询选择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")
我希望得到的事务ID,但由于某种原因, “结果” 返回
> <bound method DictCursor.fetchall of <MySQLdb.cursors.DictCursor > object at 0x000000000396F278>>
结果也是类型"instancemethod"
答
尝试改变这一行:
return self.cur.fetchall
到
return self.cur.fetchall()
没有方法名称后括号,你是返回到该方法本身,而不是在运行方法的参考。
+0
哈哈它的工作。谢谢!! –
+0
@gordonLinoff我会接受答案。然而,我必须等待10分钟才可以。 –
autocommit和ping会做什么? – slopeofhope