pymysql로 DB 밀어넣기
브랜디 인턴십으로 프로젝트를 진행중입니다.
오늘은 aquery를 이용해 모델링을 한 스키마들을 pymysql을 이용해 몫데이터로 만들어 프론트에게 주는 작업을 하려고 합니다.
aquery로 DB모델링 짠 후 아래 디스크를 누르면
모든 테이블 SQL생성을 누르면 TXT파일에 SQL문으로 만들어집니다.
txt파일의 내용을 복사해 원하는 경로에 파일을 생성해 '파일이름.sql'로 이름을 저장합니다.
내 local에서 database를 생성해줍니다.
먼저, mysql에 접속합니다.
mysql -u root
그리고 데이터베이스를 생성해줍니다.
create database brandi(원하는 이름으로 하기) character set utf8mb4 collate utf8mb4_general_ci;
만약, AWS에서 RDS를 이용했던 분들이라면 Local database에 dump처리하는 것을 알 수 있습니다.
저는 아래와 같이 명령어를 쳐서 db파일을 올렸습니다.
mysql -u root -p brandi < script.sql(sql이름)
몫데이터로 총 20개의 seller계정을 만들고자 했습니다.
그런데, 아무리 해도 아래와 같은 오류가 나지만, 해결하려고 발버둥을 쳤지만 결국 답은 모델링부터 문제였습니다....
한 테이블에서 수정자 아이디 컬럼이 pk에 fk를 주었기 때문에 생긴 오류였습니다. 이 오류를 맞이하고부터 오늘 하루를 날려버렸습니다ㅠㅠ
오류 해결 방법: 제약조건 삭제하기
alter table 테이블명 drop constraint 제약조건명;
결과확인해보기
- sellers테이블 select
- select한 결과
- 총 sellers테이블에 들어간 id값 확인
end
import pymysql
import numpy as np
import bcrypt
password = 'hello1234'
conn = pymysql.connect(
host='localhost',
user='root',
password='',
db='brandi',
charset='utf8'
)
curs = conn.cursor()
sql = """INSERT INTO sellers (
register_date,
seller_status_id,
is_master,
is_deleted,
seller_id,
seller_account_id,
english_name,
korean_name,
cs_phone,
seller_property_id,
profile_image,
password,
background_image,
simple_description,
detail_description,
zip_code,
address,
detail_address,
open_time,
close_time,
bank_id,
account_number,
account_name,
shipping_information,
exchange_refund_information,
model_height,
model_top_size,
model_bottom_size,
model_feet_size,
shopping_feedtext,
registered_product_count,
created_at,
expired_at,
modifier_id
) VALUES (
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s,
%s
)
"""
for num in range(1,21):
print(num)
encode_password = bcrypt.hashpw(str('test'+password+'!').encode('utf-8'), bcrypt.gensalt()).decode('utf-8')
curs.execute(sql,(
'2020-09-21 13:39:20', #register_date
'1', #seller_status_id
'1', #is_master
'0', #is_deleted
str(num), #seller_id
'seller'+str(num), #seller_account_id
'leejiyeon'+str(num), #english_name
'이지연'+str(num), #korean_name
'02-123-4500', #cs_phone
'1', #seleer_property_id
'https://image.brandi.me/cproduct/2020/01/17/13216968_1579243036_image1_L.jpg', #profile_image
encode_password, #password
'https://image.brandi.me/cproduct/2020/01/17/13216968_1579243036_image1_L.jpg', #background_image
'안녕하세요'+str(num), #simple_desc
'안녕하세요.상세페이지입니다.'+str(num), #detail_desc
'041-300', #zip_code
'서울특별시 강남구 테헤란로 32길 263 청송빌딩', #address
'역삼 브랜디', #detail_addr
"10:00", #open_time
"18:00", #close_time
'1', #bank_id
'02-45730203-09', #account_number
'이지연'+str(num), #account_name
'도서산간 지역은 배송비가 추가비용이 발생할 수 있으며, 그 외 지역은 무료배송입니다.', #shipping_info
'브랜디는 소비자보호법 및 전자상거래법을 기반한 환불보장제를 운영 중에 있습니다.', #exchange_refund_info
'170', #model_high
'55', #top_size
'55', #bottom_size
'250', #feet_size
'안녕하세요! 가을에 어울리는 신상이 100개 입고되었습니다.', #shopping_feedtext
'30', #regi_prod_count
'2020-09-21 13:39:20', #create_At
'9999-12-31 23:59:59', #expired_at
'1' #modifier_id
))
conn.commit()
conn.close()
Author And Source
이 문제에 관하여(pymysql로 DB 밀어넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@wldus9503/pymysql로-DB-밀어넣기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)