import psycopg2
import csv
# postgresql 접속
conn = psycopg2.connect(host = 'server_host',
database = 'name',
user = 'user',
password = 'password')
# 커서 생성
cur = conn.cursor()
# table 생성
cur.execute("""CREATE TABLE test_table (
Id INTEGER PRIMARY KEY NOT NULL,
Name VARCHAR(128),
Age INTEGER);""")
# 데이터베이스에 저장할 csv file
with open('test.csv', 'r') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
datas = [x for x in reader] # csv 파일 리스트로 저장
# header 삭제
datas.pop(0)
# Id 추가
for i in range(len(datas)):
datas[i].insert(0, i)
# 다중 삽입문을 위한 빈 텍스트 생성
insert_text = ''
# 튜플형태로 변경하고 ','로 나누어 데이터 삽입하기 위해 for문으로 삽입문 정의
for i,text in enumerate(datas):
insert_text += str(tuple(text)) # 튜플로 변경하여 저장
insert_text += ',' # ','로 데이터 나눔
insert_text = insert_text[:-1] # 삽입문의 마지막 ',' 제거
# 삽입문 전송
cur.execute("INSERT INTO passenger (Id, Name, Age) VALUES {};".format(insert_text))
# 데이터 베이스에 내용 전송
conn.commit()
# 데이터 베이스에 제대로 저장되었는지 확인
cur.execute("SELECT * FROM test_table")
result = cur.fetchall()
print(result[-3:])
# 데이터 베이스 연결 종료
conn.close()
주의 사항