Как загрузить файл 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()