簡體   English   中英

使用 mysql 和 csv 文件動態插入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM