**kwargs 无法识别密钥 'table' - python 3.5
**kwargs not recognizing key 'table' - python 3.5
我在 **kwarg
中的 kwarg table
在我调用它时无法识别。
class Database():
def set_db_setting(self, host, username, passwd, database):
try:
self.host = host
self.username = username
self.passwd = passwd
self.database = database
self.db = pymysql.connect(host=host, user=username, passwd=passwd, db=database)
print('connected to: {}'.format(database))
return self.db
except:
print('\nerror connecting to database\n')
def db_select(self, *selected_fields, **kwargs):
self.selected_fields = selected_fields = list(selected_fields)
self.table = (kwargs['table']
if 'table' in kwargs
else selected_fields.pop())
try:
with self.db.cursor() as cursor:
sql_tld_id_query = Database.query_stmt_list[0]+ ', '.join(selected_fields) + Database.query_stmt_list[4] + table + Database.query_stmt_list[5] + where_field + '=' + 'www.website.com'
print("sql_tld_id_query is {}".format(sql_tld_id_query))
except Exception as gatherid_err:
print("exception was {}".format(gatherid_err))
self.db.rollback()
I'm invoking it like:
dbclass = Database()
dbclass.set_db_setting('localhost', 'root', 'password', 'garbagedb')
dbclass.db_select('id', 'name', table='tld', where_field='name')
我收到如下错误:
name 'table' is not defined
完整回溯
通过以下方式调用:
import traceback
traceback.print_stack()
`
File "dbcrud.py", line 56, in <module>
dbclass.db_select('id', 'name', table='tld', where_field='name')
File "dbcrud.py", line 31, in db_select
traceback.print_stack()
self.selected_fields is ['id', 'name']
exception was name 'table' is not defined
我做错了什么?
我添加了续行以使其水平对齐...
sql_tld_id_query = Database.query_stmt_list[0]+ ', '.join(selected_fields) + \
Database.query_stmt_list[4] + <b>table</b> + Database.query_stmt_list[5] + \
where_field + '=' + 'www.website.com'
粗体的table
应该是self.table
你盲目地用 try
except Exception
块捕获所有异常,这可能对你隐藏了真正的问题。最好找出您要捕获的特定类型的异常,然后只过滤掉它们。例如,如果我想要一个计算器程序在用户尝试除以零时不会崩溃,我会使用 try: ... except ZeroDivisionError as e: ...
我在 **kwarg
中的 kwarg table
在我调用它时无法识别。
class Database():
def set_db_setting(self, host, username, passwd, database):
try:
self.host = host
self.username = username
self.passwd = passwd
self.database = database
self.db = pymysql.connect(host=host, user=username, passwd=passwd, db=database)
print('connected to: {}'.format(database))
return self.db
except:
print('\nerror connecting to database\n')
def db_select(self, *selected_fields, **kwargs):
self.selected_fields = selected_fields = list(selected_fields)
self.table = (kwargs['table']
if 'table' in kwargs
else selected_fields.pop())
try:
with self.db.cursor() as cursor:
sql_tld_id_query = Database.query_stmt_list[0]+ ', '.join(selected_fields) + Database.query_stmt_list[4] + table + Database.query_stmt_list[5] + where_field + '=' + 'www.website.com'
print("sql_tld_id_query is {}".format(sql_tld_id_query))
except Exception as gatherid_err:
print("exception was {}".format(gatherid_err))
self.db.rollback()
I'm invoking it like:
dbclass = Database()
dbclass.set_db_setting('localhost', 'root', 'password', 'garbagedb')
dbclass.db_select('id', 'name', table='tld', where_field='name')
我收到如下错误:
name 'table' is not defined
完整回溯 通过以下方式调用:
import traceback
traceback.print_stack()
`
File "dbcrud.py", line 56, in <module>
dbclass.db_select('id', 'name', table='tld', where_field='name')
File "dbcrud.py", line 31, in db_select
traceback.print_stack()
self.selected_fields is ['id', 'name']
exception was name 'table' is not defined
我做错了什么?
我添加了续行以使其水平对齐...
sql_tld_id_query = Database.query_stmt_list[0]+ ', '.join(selected_fields) + \
Database.query_stmt_list[4] + <b>table</b> + Database.query_stmt_list[5] + \
where_field + '=' + 'www.website.com'
粗体的table
应该是self.table
你盲目地用 try
except Exception
块捕获所有异常,这可能对你隐藏了真正的问题。最好找出您要捕获的特定类型的异常,然后只过滤掉它们。例如,如果我想要一个计算器程序在用户尝试除以零时不会崩溃,我会使用 try: ... except ZeroDivisionError as e: ...