Reputation: 2686
It doesn't appear I can access my fields Database.query_stmt_list[i]
in Python 3.5.
My code looks like:
class Database():
query_stmt_list = ['SELECT','INSERT','UPDATE','DELETE','FROM','WHERE']
def __init__(self):
self.query_stmt_list = Database.query_stmt_list
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())
self.where_field = (kwargs['where_field']
if 'where_field' in kwargs
else selected_fields.pop())
try:
with self.db.cursor() as cursor:
sql_tld_id_query = Database.query_stmt_list[0]+ 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()
#instantiate class/method
dbclass = Database()
dbclass.set_db_setting('localhost', 'root', 'password', 'garbagedb')
dbclass.db_select(['id', 'name'], table='tld', where_field='name')
I get an error like:
Can't convert 'list' object to str implicitly
on line:
sql_tld_id_query = Database.query_stmt_list[0]+ selected_fields + Database.query_stmt_list[4] + table + Database.query_stmt_list[5] + where_field + '=' + 'www.website.com'
FULL STACK:
$ python dbcrud.py
connected to: garbagedb
exception was sequence item 0: expected str instance, list found
What am I doing wrong here? Does anyone see what is going wrong?
Thank you
Upvotes: 1
Views: 167
Reputation:
You're trying to form a string on that line. Rather than the term
selected_fields
which is a list, not a string, seems like you want
', '.join(selected_fields)
to form a proper comma separated, SQL-compliant listing of fields, yes?
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'
Upvotes: 1