프로젝트
불법주정차 단속 위치정보 적재
import csv
import mysql.connector
import pandas as pd
mysql_host = 'localhost'
mysql_user = 'root'
mysql_password = '****'
mysql_database = 'programmers_da'
csv_file_path = 'C:/Users/user/OneDrive/바탕 화면/데이터 분석 데브코스/프로젝트/불법주정차/불법주정차 단속 위치정보(22.11월_23.10월).csv'
conn = mysql.connector.connect(
host=mysql_host,
user=mysql_user,
password=mysql_password,
database=mysql_database
)
df = pd.read_csv(csv_file_path, delimiter=',', encoding='ANSI')
cursor = conn.cursor()
mysql_type_mapping = {
'int64': 'INT',
'float64': 'DOUBLE',
'object': 'TEXT'
}
columns = [
"단속일 TEXT",
"시간 TEXT",
"구주소 TEXT",
"도로명 TEXT",
"경도 DOUBLE",
"위도 DOUBLE"
]
drop_table_query = "DROP TABLE IF EXISTS Crackdown_Location"
cursor.execute(drop_table_query)
create_table_query = f"CREATE TABLE IF NOT EXISTS Crackdown_Location ({', '.join(columns)})"
cursor.execute(create_table_query)
insert_query = f"INSERT INTO Crackdown_Location ({', '.join(df.columns)}) VALUES ({', '.join(['%s' for _ in df.columns])})"
batch_size = 1000
records = []
with open(csv_file_path, 'r', encoding='ANSI') as csvfile:
csv_reader = csv.reader(csvfile, delimiter=',')
header = next(csv_reader)
for i, row in enumerate(csv_reader, start=1):
try:
row[4] = round(float(row[4]), 10) if row[4] else None
row[5] = round(float(row[5]), 10) if row[5] else None
records.append(tuple(row))
except ValueError as e:
print(f"Error converting values to float at row {i}: {e}")
if len(records) >= batch_size:
try:
cursor.executemany(insert_query, records)
conn.commit()
except mysql.connector.errors.DataError as e:
print(f"Error inserting records at row {i}: {e}")
records = []
if records:
try:
cursor.executemany(insert_query, records)
conn.commit()
except mysql.connector.errors.DataError as e:
print(f"Error inserting final records: {e}")
cursor.close()
conn.close()