반응형
Python의 MySQL에 CSV 데이터 로드
여기서 뭘 놓쳤는지 모르겠지만 이 코드는 오류 메시지 없이 실행되지만 테이블에는 아무것도 없습니다.3열의 CSV 값을 mysql 테이블에 로드합니다.
import csv
import MySQLdb
mydb = MySQLdb.connect(host='localhost',
user='root',
passwd='',
db='mydb')
cursor = mydb.cursor()
csv_data = csv.reader(file('students.csv'))
for row in csv_data:
cursor.execute('INSERT INTO testcsv(names, \
classes, mark )' \
'VALUES("%s", "%s", "%s")',
row)
#close the connection to the database.
cursor.close()
print "Done"
다른 분이 봐주시면 감사하겠습니다.
해야 할 것 같아요mydb.commit()
에 삽입할 수 있습니다.
뭐 이런 거
import csv
import MySQLdb
mydb = MySQLdb.connect(host='localhost',
user='root',
passwd='',
db='mydb')
cursor = mydb.cursor()
csv_data = csv.reader(file('students.csv'))
for row in csv_data:
cursor.execute('INSERT INTO testcsv(names, \
classes, mark )' \
'VALUES("%s", "%s", "%s")',
row)
#close the connection to the database.
mydb.commit()
cursor.close()
print "Done"
팬더와 sqalchemy 라이브러리가 없는 경우 pip을 사용하여 설치합니다.
pip install pandas
pip install sqlalchemy
판다와 sqalchemy를 사용하여 데이터베이스에 직접 삽입할 수 있습니다.
import csv
import pandas as pd
from sqlalchemy import create_engine, types
engine = create_engine('mysql://root:*Enter password here*@localhost/*Enter Databse name here*') # enter your password and database names here
df = pd.read_csv("Excel_file_name.csv",sep=',',quotechar='\'',encoding='utf8') # Replace Excel_file_name with your excel sheet name
df.to_sql('Table_name',con=engine,index=False,if_exists='append') # Replace Table_name with your sql table name
위의 답변이 좋을 것 같습니다.그러나 다른 방법은 db connect와 함께 auto commit 옵션을 추가하는 것입니다.이렇게 하면 DB에서 수행되는 다른 모든 작업이 자동으로 커밋되므로 언급이 필요하지 않습니다.sql.commit()
매번.
mydb = MySQLdb.connect(host='localhost',
user='root',
passwd='',
db='mydb',autocommit=true)
도움이 될 경우 pymsql 사용
import pymysql
import csv
db = pymysql.connect("localhost","root","12345678","data" )
cursor = db.cursor()
csv_data = csv.reader(open('test.csv'))
next(csv_data)
for row in csv_data:
cursor.execute('INSERT INTO PM(col1,col2) VALUES(%s, %s)',row)
db.commit()
cursor.close()
from __future__ import print_function
import csv
import MySQLdb
print("Enter File To Be Export")
conn = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="", db="database")
cursor = conn.cursor()
#sql = 'CREATE DATABASE test1'
sql ='''DROP TABLE IF EXISTS `test1`; CREATE TABLE test1 (policyID int, statecode varchar(255), county varchar(255))'''
cursor.execute(sql)
with open('C:/Users/Desktop/Code/python/sample.csv') as csvfile:
reader = csv.DictReader(csvfile, delimiter = ',')
for row in reader:
print(row['policyID'], row['statecode'], row['county'])
# insert
conn = MySQLdb.connect(host="localhost", port=3306, user="root", passwd="", db="database")
sql_statement = "INSERT INTO test1(policyID ,statecode,county) VALUES (%s,%s,%s)"
cur = conn.cursor()
cur.executemany(sql_statement,[(row['policyID'], row['statecode'], row['county'])])
conn.escape_string(sql_statement)
conn.commit()
팬더 데이터 프레임인 경우 다음을 수행할 수 있습니다.
데이터 전송
csv_data.to_sql=(con=mydb, name='<the name of your table>',
if_exists='replace', flavor='mysql')
를 사용하지 않도록 하기 위해for
.
가장 빠른 방법은 "load data infile" 문을 사용하여 MySQL 벌크 로더를 사용하는 것입니다.Python에서 생각할 수 있는 어떤 방법보다 훨씬 빠른 방법입니다.Python을 사용해야 하는 경우 Python 자체에서 "load data infile" 문을 호출할 수 있습니다.
언급URL : https://stackoverflow.com/questions/10154633/load-csv-data-into-mysql-in-python
반응형
'programing' 카테고리의 다른 글
최대 절전 모드에서 열거형을 문자열에 매핑하는 중 (0) | 2022.12.31 |
---|---|
기본 키가 존재하지 않는지 확인하는 동안 리퀴베이스가 실패함 (0) | 2022.12.31 |
Mysql sys_exec 공유 라이브러리 'lib_mysqludf_sys.so'를 열 수 없습니다(errno: 11, 잘못된 ELF 클래스: ELFCLASS32) (0) | 2022.12.31 |
@Transactional(전파=전파).필수) (0) | 2022.12.31 |
이 다차원 PHP 배열에서 단일 값을 가져오는 방법 (0) | 2022.12.21 |