簡體   English   中英

使用 Python 插入 MySQL 數據庫時出現錯誤 ProgrammingError

[英]Get error ProgrammingError when insert to MySQL database using Python

我有一個 dataframe 有大約 200M 行,例如:

Date         tableName    attributeName
29/03/2019   tableA       attributeA
....

我想將 dataframe 保存到 MySQL 數據庫中的表中。 這是我嘗試將 dataframe 插入表的內容:

def insertToTableDB(tableName,dataFrame):
    mysqlCon = mysql.connector.connect(host='localhost',user='root',passwd='')
    cursor = mysqlCon.cursor()
    for index, row in dataFrame.iterrows():
        myList =[row.Date, row.tableName, row.attributeName]
        query = "INSERT INTO `{0}`(`Date`, `tableName`, `attributeName`) VALUES (%s,%s,%s);".format(tableName)
        cursor.execute(query,myList)
        print(myList)
    try:
        mysqlCon.commit()
        cursor.close()        
        print("Done")
        return tableName,dataFrame
    except:
        cursor.close()
        print("Fail")

當我插入具有 2M 行的 dataframe 時,此代碼成功。 但是,當我插入具有 200M 行的 dataframe 時,出現如下錯誤:

File "C:\Users\User\Anaconda3\lib\site-packages\mysql\connector\cursor.py", line 569, in execute
self._handle_result(self._connection.cmd_query(stmt))

File "C:\Users\User\Anaconda3\lib\site-packages\mysql\connector\connection.py", line 553, in cmd_query
result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))

File "C:\Users\User\Anaconda3\lib\site-packages\mysql\connector\connection.py", line 442, in _handle_result
raise errors.get_exception(packet)

ProgrammingError: Unknown column 'nan' in 'field list'

我的 dataframe 沒有“南”值。 有人可以幫我解決這個問題嗎?

太感謝了。

試試這些步驟

  1. 使用dropna刪除包含 nan 的行
  2. 過濾字符串中不包含nan行。
  3. 將 nan 轉換為 None
df.dropna(inplace=True)

df[(df['Date']!='nan') & (df['tableName']!='nan') &(df['attributeName']!='nan')]

df1 = df.where((pd.notnull(df)), None)

將字符串 'empty' 處處替換為 'NaN':

df = df.replace(np.nan, 'empty')

記得:

import numpy as np

df = df.astype(str) 為我解決了這個問題——假設你已經設置了你的表模式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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