использование списка для ввода данных с использованием Python Psycoyg2 (с отсутствующими данными) - PullRequest
0 голосов
/ 06 декабря 2010

Хотите получить данные с некоторыми пропущенными значениями из cvs в postgresql.Я счастлив вставить с помощью строк.Я бы хотел быстро сделать это, используя список или что-то похожее.Я также должен проверить пропущенные значения и заменить, как я получаю ошибку в противном случае.

for w in csvReader:  
    if a ==0:  
       var = w  
       sql_table = 'CREATE TABLE TableName (%s)' % ','.join('%s VARCHAR(50)' % name for name in var)  
        dict_cur.execute(sql_table)  

    else:  
        colnum = 0  
        for col in w:  
            nms= col   
            print w, 'column'  
            #this is not correct 
            sql_insert = ('INSERT INTO TableName (%s) VALUES (%s)' % (','.join('%s' % name for name in var),','.join('%s' % nm for nm in nms)))  
            cursor.execute(sql_insert)  
            colnum += 1  

        print w  
    a = a + 1  

Ошибка Traceback (последний вызов был последним): файл "/home/matthew/workspace/dfdsggd/try_db_thing.py", строка 41 в cursor.execute (sql_insert) psycopg2.ProgrammingError: ошибка синтаксисана или рядом с "."ЛИНИЯ 1: ... ORDER_ADM, MONTH_ADM, DAY_ADM, YEAR_ADM) ЗНАЧЕНИЯ (2,6,7,. 3,5,7) ^

1 Ответ

0 голосов
/ 06 декабря 2010

Глядя на сообщение об ошибке, похоже, что вы пытаетесь вставить '.'просто прочитайте из csv в вашей базе данных в поле ORDER_ADM, не заключая его в кавычки.

Также три файла DAY_ADM, MONTH_ADM, YEAR_ADM предполагают, что вам, вероятно, следует объединить их в дату и поместить в одно и то же полебаза данных.Но это означает думать как-то о структуре базы данных (не делая все VARCHAR).Также создание таблицы в цикле, которая читает данные, даже на первой итерации, довольно необычно.

...