Tôi đang cố gắng chèn dữ liệu từ một từ điển vào cơ sở dữ liệu. Tôi muốn lặp lại các giá trị và định dạng chúng cho phù hợp, tùy thuộc vào loại dữ liệu. Đây là một đoạn mã tôi đang sử dụng:
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
Khi tôi chạy thuật toán bằng cách sử dụng một số dữ liệu mẫu (xem bên dưới), tôi gặp lỗi:
TypeError: chuỗi mục 0: chuỗi dự kiến, int được tìm thấy
Một ví dụ về dữ liệu value_list đưa ra lỗi trên là:
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]
Tôi đang làm gì sai?
values = ",".join(map(str, value_list))