Как загрузить файл csv в базу данных django postgres?

Я использую django для загрузки файла csv в базу данных, вот код для чтения файла:

import csv
with open(r'/Users/williaml/Downloads/events.csv') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter=',' ,quotechar=' ')
    count=0
    for row in spamreader:
           print(row)

Выход:

['"PATIENT ID', 'PATIENT NAME', 'EVENT TYPE', 'EVENT VALUE', 'EVENT UNIT', 'EVENT TIME"']
['"1', 'Jane', 'HR', '82', 'beats/minute', '2021-07-07T02:27:00Z"']
['"1', 'Jane', 'RR', '5', 'breaths/minute', '2021-07-07T02:27:00Z"']
['"2', 'John', 'HR', '83', 'beats/minute', '2021-07-07T02:27:00Z"']
['"2', 'John', 'RR', '14', 'breaths/minute', '2021-07-07T02:27:00Z"']
['"1', 'Jane', 'HR', '88', 'beats/minute', '2021-07-07T02:28:00Z"']
['"1', 'Jane', 'RR', '20', 'breaths/minute', '2021-07-07T02:28:00Z"']
['"2', 'John', 'HR', '115', 'beats/minute', '2021-07-07T02:28:00Z"']
['"2', 'John', 'RR', '5', 'breaths/minute', '2021-07-07T02:28:00Z"']
['"1', 'Jane', 'HR', '66', 'beats/minute', '2021-07-07T02:29:00Z"']
['"1', 'Jane', 'RR', '15', 'breaths/minute', '2021-07-07T02:29:00Z"']
['"2', 'John', 'HR', '107', 'beats/minute', '2021-07-07T02:29:00Z"']
['"2', 'John', 'RR', '17', 'breaths/minute', '2021-07-07T02:29:00Z"']

Мой первый вопрос: как преобразовать идентификатор пациента в целое число и как преобразовать значение события в целое число, сейчас они строковые, но в базе данных они должны быть целыми.

Второй вопрос - как использовать sql для вставки строки в базу данных:

try:
    conn = connect(
        dbname = "python_test",
        user = "WRONG_USER",
        host = "localhost",
        password = "mypass"
    )
except OperationalError as err:
    # pass exception to function
    print_psycopg2_exception(err)

    # set the connection to 'None' in case of error
    conn = None
    
# if the connection was successful
if conn != None:

    # declare a cursor object from the connection
    cursor = conn.cursor()
    print ("cursor object:", cursor, "\n")

    # catch exception for invalid SQL statement
    
    with open(r'/Users/williaml/Downloads/events.csv') as csvfile: 
            spamreader = csv.reader(csvfile, delimiter=',' ,quotechar=' ')
            count=0
            for row in spamreader:
                if count > 0:
                   try:
                   cursor.execute("""INSERT into  patientdb values(%s,%s,%s,%s,%s,%s)""",(row[0],row[1],row[2],row[3],row[4],row[5],row[6]))
                  except Exception as err:
                 # pass exception to function
                  print_psycopg2_exception(err)

                 cursor.commit
                 count+=1
    
        
cursor.close()

# close the connection object also
conn.close()
Вернуться на верх