Open jungssg opened 1 week ago
데이터베이스에 판례본문 넣는 코드
import pandas as pd import pymysql from sqlalchemy import create_engine, Table, Column, String, MetaData from sqlalchemy.dialects.mysql import LONGTEXT from db_info import user, password, host, port, database
user = user password = password host = host port = port database = database
df_injury = pd.read_csv('data/상해_본문2.csv') df_fraud = pd.read_csv('data/사기_본문2.csv') df_inheritance = pd.read_csv('data/상속_본문2.csv') df_labor = pd.read_csv('data/근로_본문2.csv')
engine = create_engine(f'mysql+pymysql://{user}:{password}@{host}:{port}/{database}', echo=False)
metadata = MetaData()
metadata.drop_all(engine) # 기존 테이블 삭제
injury_content_table = Table('injury_content', metadata, Column('판례정보일련번호', String(100)), Column('사건번호', String(100)), Column('선고', LONGTEXT), # LONGTEXT 타입으로 설정 Column('판결유형', String(100)), Column('판시사항', LONGTEXT), Column('판결요지', LONGTEXT), Column('참조조문', LONGTEXT), Column('참조판례', LONGTEXT), Column('판례내용', LONGTEXT) # 판례내용을 LONGTEXT로 설정 )
metadata.create_all(engine)
df_injury.to_sql(name='injury_content', con=engine, if_exists='replace', index=False)
engine.dispose()
print("데이터베이스 저장 완료")
https://stackoverflow.com/questions/56962051/pandas-dataframe-to-sql-with-data-longer-than-65536-characters
dtype = { '판례내용' : LONGTEXT, '판시사항': TEXT, '판결요지': TEXT, '참조조문': TEXT, '참조판례': TEXT, } df_injury.to_sql(name='injury_content', con=engine, if_exists='replace', index=False, dtype=dtype)
데이터베이스에 판례본문 넣는 코드
실행시 sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, “Data too long for column ‘판례내용’ at row 3”) 에러발생
db로 저장
import pandas as pd import pymysql from sqlalchemy import create_engine, Table, Column, String, MetaData from sqlalchemy.dialects.mysql import LONGTEXT from db_info import user, password, host, port, database
user = user password = password host = host port = port database = database
CSV 파일 로드
df_injury = pd.read_csv('data/상해_본문2.csv') df_fraud = pd.read_csv('data/사기_본문2.csv') df_inheritance = pd.read_csv('data/상속_본문2.csv') df_labor = pd.read_csv('data/근로_본문2.csv')
MySQL 데이터베이스 연결 설정
engine = create_engine(f'mysql+pymysql://{user}:{password}@{host}:{port}/{database}', echo=False)
메타데이터 객체 생성
metadata = MetaData()
테이블을 삭제하고 다시 생성 (기존 테이블이 있을 경우 교체)
metadata.drop_all(engine) # 기존 테이블 삭제
상해본문 테이블 정의 (컬럼 타입을 명시적으로 설정)
injury_content_table = Table('injury_content', metadata, Column('판례정보일련번호', String(100)), Column('사건번호', String(100)), Column('선고', LONGTEXT), # LONGTEXT 타입으로 설정 Column('판결유형', String(100)), Column('판시사항', LONGTEXT), Column('판결요지', LONGTEXT), Column('참조조문', LONGTEXT), Column('참조판례', LONGTEXT), Column('판례내용', LONGTEXT) # 판례내용을 LONGTEXT로 설정 )
테이블을 데이터베이스에 생성
metadata.create_all(engine)
데이터프레임을 MySQL 테이블에 저장 (여기서는 미리 정의한 스키마 사용)
df_injury.to_sql(name='injury_content', con=engine, if_exists='replace', index=False)
연결 닫기
engine.dispose()
print("데이터베이스 저장 완료")