TypeError: sequence item 0: expected string, int found

python

Solution

`string.join` connects elements inside list of strings, not ints.

Use this generator expression instead :

values = ','.join(str(v) for v in value_list)

Problem

I am attempting to insert data from a dictionary into a database. I want to iterate over the values and format them accordingly, depending on the data type. Here is a snippet of the code I am using: ``` def _db_inserts(dbinfo): try: rows = dbinfo['datarows'] for row in rows: field_names = ",".join(["'{0}'".format(x) for x in row.keys()]) value_list = row.values() for pos, value in enumerate(value_list): if isinstance(value, str): value_list[pos] = "'{0}'".format(value) elif isinstance(value, datetime): value_list[pos] = "'{0}'".format(value.strftime('%Y-%m-%d')) values = ",".join(value_list) sql = "INSERT INTO table_foobar ({0}) VALUES ({1})".format(field_names, values) except Exception as e: print 'BARFED with msg:',e ``` When I run the algo using some sample data (see below), I get the error: TypeError: sequence item 0: expected string, int found An example of a value_list data which gives the above error is: ``` value_list = [377, -99999, -99999, 'f', -99999, -99999, -99999, 1108.0999999999999, 0, 'f', -99999, 0, 'f', -99999, 'f', -99999, 1108.0999999999999, -99999, 'f', -99999, 'f', -99999, 'f', 'f', 0, 1108.0999999999999, -99999, -99999, 'f', 'f', 'f', -99999, 'f', '1984-04-02', -99999, 'f', -99999, 'f', 1108.0999999999999] ``` What am I doing wrong?

Original source