最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pandas之to_sql()插入數(shù)據(jù)到mysql中所遇到的問題及解決

 更新時間:2023年06月21日 14:49:03   作者:肖永威  
這篇文章主要介紹了Pandas之to_sql()插入數(shù)據(jù)到mysql中所遇到的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

to_sql()插入數(shù)據(jù)到mysql中所遇到的問題

使用pymysql驅(qū)動API,出現(xiàn)如下錯誤:

DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type=‘table’ AND name=?;’: not all arguments converted during string formatting

1. pandas的數(shù)據(jù)表插入數(shù)據(jù)到mysql中所遇到的問題

1.1. pymysql驅(qū)動接口問題

根據(jù)以往經(jīng)驗,mysql操作很簡單,安裝pymysql驅(qū)動即可。

pip install pymysql

編寫了通過pandas的to_sql寫入數(shù)據(jù)庫的代碼。

import pandas as pd
import datetime
import uuid  # 數(shù)據(jù)庫主鍵唯一
import pymysql
def mysql_db():
    # 連接數(shù)據(jù)庫肯定需要一些參數(shù)
    conn = pymysql.connect(
        host="192.168.**.**",
        port=3306,
        database="M*****DB",
        charset="utf8",
        user="ty",
        passwd="****"
    )
    return conn
# df = 略去
# 增加唯一主鍵uuid
id = []
for i in range(len(df)):
    id.append(uuid.uuid1())
# 增加記錄寫入時間
df['CreateTime'] = datetime.datetime.now()
df['id'] = id
# 下面是出現(xiàn)問題的地方
conn = mysql_db()
tablename = '******'
dd = df[colsname]
# 浮點型截斷數(shù)據(jù)處理
for k,v in cols_len.items():
    dd[k] = dd[k].round(v)
# 下面是出現(xiàn)問題的地方
dd.to_sql(tablename, conn,index=False, if_exists='append')

執(zhí)行程序,報出如下問題:

DatabaseError: Execution failed on sql ‘SELECT name FROM sqlite_master WHERE type=‘table’ AND name=?;’: not all arguments converted during string formatting

嘗試執(zhí)行查詢語句:

df0=pd.read_sql('select * from S*******y',conn)
df0

一切很正常,結(jié)果如下:

1.2. 關(guān)于數(shù)據(jù)庫主鍵

主鍵一般使用uuid,python中的uuid模塊基于信息如MAC地址、時間戳、命名空間、隨機數(shù)、偽隨機數(shù)來uuid。

具體方法有如下幾個:

  • uuid.uuid1():基于MAC地址,時間戳,隨機數(shù)來生成唯一的uuid,可以保證全球范圍內(nèi)的唯一性。
  • uuid.uuid2():算法與uuid1相同,不同的是把時間戳的前4位置換為POSIX的UID。不過需要注意的是python中沒有基于DCE的算法,所以python的uuid模塊中沒有uuid2這個方法。
  • uuid.uuid3(namespace,name):通過計算一個命名空間和名字的md5散列值來給出一個uuid,所以可以保證命名空間中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。其中,namespace并不是一個自己手動指定的字符串或其他量,而是在uuid模塊中本身給出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID這些值。這些值本身也是UUID對象,根據(jù)一定的規(guī)則計算得出。
  • uuid.uuid4():通過偽隨機數(shù)得到uuid,是有一定概率重復(fù)的
  • uuid.uuid5(namespace,name):和uuid3基本相同,只不過采用的散列算法是sha1。

使用時,按數(shù)據(jù)集中的記錄數(shù),一次性生成uuid列表,并入到表中。

2. pandas的to_sql()有個隱藏的坑

解決辦法

查了pandas官網(wǎng)和其他不少有關(guān)to_sql的文章,都沒有看到有提及數(shù)據(jù)庫連接這個坑,不過在pandas官網(wǎng)的to_sql例子和其他文章的to_sql中都有一個共同點,就是引用sqlalchemy這個第三方ORM庫來進行連接的,據(jù)此解決to_sql這個報錯。

首先,安裝 sqlalchemy。

pip install sqlalchemy

修改代碼,增加函數(shù):

def mysql_engine_db():
    # 連接數(shù)據(jù)庫肯定需要一些參數(shù)
    engine = create_engine(
        'mysql+pymysql://ty:***@192.168.**.**:3306/M*******DB'
        # mysql+pymysql://用戶: 密碼@url: 端口/數(shù)據(jù)庫
    )
    return engine
# 下面是出現(xiàn)問題的地方
engine= mysql_engine_db()
tablename = '******'
dd = df[colsname]
# 浮點型截斷數(shù)據(jù)處理
for k,v in cols_len.items():
    dd[k] = dd[k].round(v)
# 下面是出現(xiàn)問題的地方
dd.to_sql(tablename, engine,index=False, if_exists='append')   

如此簡單的解決問題!

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 利用Python提取圖片經(jīng)緯度并鎖定拍照地點

    利用Python提取圖片經(jīng)緯度并鎖定拍照地點

    每張照片的屬性中都會有一個經(jīng)緯度信息,本文將利用Python實現(xiàn)提取圖片的經(jīng)緯度,并鎖定拍照的低點,感興趣的小伙伴可以跟隨小編一起動手試一試
    2022-02-02
  • Django實現(xiàn)celery定時任務(wù)過程解析

    Django實現(xiàn)celery定時任務(wù)過程解析

    這篇文章主要介紹了Django實現(xiàn)celery定時任務(wù)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 基于python判斷字符串括號是否閉合{}[]()

    基于python判斷字符串括號是否閉合{}[]()

    這篇文章主要介紹了基于python判斷字符串括號是否閉合{}[](),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Python編程中歸并排序算法的實現(xiàn)步驟詳解

    Python編程中歸并排序算法的實現(xiàn)步驟詳解

    這篇文章主要介紹了Python編程中歸并排序算法的實現(xiàn)步驟詳解,歸并排序的平均時間復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05
  • 使用Pandas進行數(shù)據(jù)聚合與操作的全面指南

    使用Pandas進行數(shù)據(jù)聚合與操作的全面指南

    在數(shù)據(jù)分析的廣闊領(lǐng)域中,數(shù)據(jù)聚合與操作無疑是核心環(huán)節(jié),Pandas 作為 Python 生態(tài)系統(tǒng)中備受推崇的數(shù)據(jù)處理庫,以其簡潔的語法和強大的功能,成為數(shù)據(jù)分析師和科學家的首選工具,本文將帶領(lǐng)讀者全面探索 Pandas 在數(shù)據(jù)處理中的應(yīng)用,涵蓋從數(shù)據(jù)合并到可視化的關(guān)鍵技術(shù)
    2025-06-06
  • 使用Python為導(dǎo)入的模塊設(shè)置別名

    使用Python為導(dǎo)入的模塊設(shè)置別名

    在Python開發(fā)中,我們常常需要使用功能強大的第三方庫,比如處理數(shù)據(jù)的pandas、繪制圖表的matplotlib、進行科學計算的numpy,但這些庫的全名往往冗長,導(dǎo)致代碼可讀性下降,而模塊別名正是解決這一痛點的優(yōu)雅方案,本文將深入探討如何科學使用別名,避免常見陷阱
    2026-06-06
  • python pygame實現(xiàn)球球大作戰(zhàn)

    python pygame實現(xiàn)球球大作戰(zhàn)

    這篇文章主要為大家詳細介紹了Python pygame實現(xiàn)球球大作戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • DenseNet121模型實現(xiàn)26個英文字母識別任務(wù)

    DenseNet121模型實現(xiàn)26個英文字母識別任務(wù)

    這篇文章主要為大家介紹了DenseNet121模型實現(xiàn)26個英文字母識別任務(wù)的實例過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • Django框架中的對象列表視圖使用示例

    Django框架中的對象列表視圖使用示例

    這篇文章主要介紹了Django框架中的對象列表視圖使用示例,Django是重多Python人氣web框架中最為著名的一個,需要的朋友可以參考下
    2015-07-07
  • Python中使用MySQL模糊查詢的詳細方法

    Python中使用MySQL模糊查詢的詳細方法

    這篇文章主要介紹了Python中使用MySQL模糊查詢的方法,以下是一個使用pymysql進行模糊查詢的詳細示例,包括安裝庫、連接數(shù)據(jù)庫、執(zhí)行查詢以及處理結(jié)果,需要的朋友可以參考下
    2024-06-06

最新評論

夹江县| 监利县| 林甸县| 内丘县| 息烽县| 瑞昌市| 广汉市| 银川市| 武清区| 荆州市| 澄迈县| 浦东新区| 麻栗坡县| 漳州市| 辉县市| 沙洋县| 富平县| 错那县| 洛隆县| 威远县| 中方县| 孝感市| 阿图什市| 抚宁县| 酉阳| 且末县| 诸暨市| 舞钢市| 平阳县| 新绛县| 青铜峡市| 汝阳县| 衢州市| 和顺县| 历史| 洛南县| 临夏县| 昌乐县| 莫力| 重庆市| 锡林郭勒盟|