[英]ProgrammingError while trying to insert data into a MySQL table using Python
[英]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 沒有“南”值。 有人可以幫我解決這個問題嗎?
太感謝了。
試試這些步驟
dropna
刪除包含 nan 的行nan
行。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.