[英]dynamic insert using mysql and csv file
我正在学习 python ....我正在尝试将 csv 文件加载到 mysql 中。 我收到以下错误。 有人可以帮忙吗?
ordinal code:
import csv
import sqlalchemy
NULL_FIELD_VALUE = r'\N'
file_name = "C:/105AML11232020.txt"
tbl_name="aml_master"
engine = sqlalchemy.create_engine('mysql+mysqlconnector://root:xxxxx@localhost:3306/test',
connect_args={'auth_plugin': 'mysql_native_password'})
connection = engine.connect()
with open(file_name) as csvfile:
reader = csv.DictReader(csvfile, delimiter='|')
insert_table = table(tbl_name,*[column(field) for field in reader.fieldnames])
insert_dict = [{k: None if v == NULL_FIELD_VALUE else v for k,v in row.items()} for row in reader]
connection.execute(insert_table.insert(), insert_dict)
错误:
insert_dict = [{k: None if v == NULL_FIELD_VALUE else v for k,v in row.items()} for row in reader] ^
IndentationError: unindent does not match any outer indentation level
Pandas 真的让这类事情变得容易。
这是一个例子:
import pandas as pd
import sqlalchemy
file_name = "C:/105AML11232020.txt"
tbl_name = "aml_master"
engine = sqlalchemy.create_engine(
"mysql+mysqlconnector://root:xxxxx@localhost:3306/test",
connect_args={"auth_plugin": "mysql_native_password"},
)
#Loads the file into a dataframe
data = pd.read_csv(file_name)
# Save the datafile to a table
data.to_sql(tbl_name, con=engine)
检查 pandas 文档中的 DataFrame.read_csv 和 DataFrame.to_sql
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql .html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.