一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python+Excel怎么創(chuàng)建數(shù)據(jù)庫(kù)表

汽車(chē)電子技術(shù) ? 來(lái)源:Python數(shù)據(jù)分析之旅 ? 作者:cauwfq ? 2023-02-24 15:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

pYYBAGP4YDOAN-PSAAC0bxpmYK8709.png

一.項(xiàng)目背景

一個(gè)目錄下有若干個(gè)Csv/Excel文件,現(xiàn)在需求是根據(jù)這些Csv文件的表頭,生成對(duì)
應(yīng)的SQL建表語(yǔ)句。

二.實(shí)現(xiàn)過(guò)程

1.獲取文件
》》遍歷路徑下文件
》》獲取Excel文件
》》返回文件路徑

#獲取文件路徑
def get_path(file_path):
    #存儲(chǔ)路徑信息
    path_list=[]
    #遍歷路徑下文件
    for file in os.listdir(file_path):
        #獲取文件名稱
        file_name=os.path.splitext(file)[0]
        #判斷是否為Excel文件
        if file.endswith('.xlsx'):
            #添加文件路徑
            path_list.append((os.path.join(file_path,file),file_name))
    #返回文件路徑
    return path_list

poYBAGP4YFqADlc-AAAw9A3NnGI179.png
2.構(gòu)建Mysql類(lèi)
》》初始化Mysql連接
》》運(yùn)行SQL語(yǔ)句

#MySQL類(lèi)
class Mysql_connect():
    def __init__(self, host, user, password, database):
        #初始化連接信息
        self.conn = pymysql.connect(host=host,
                                    user=user,
                                    password=password,
                                    database=database
                                    )

    #運(yùn)行sql語(yǔ)句
    def run_sql(self, sql):
        #獲取游標(biāo)
        cursor = self.conn.cursor()
        #執(zhí)行SQL語(yǔ)句
        cursor.execute(sql)
        #提交事務(wù)
        self.conn.commit()
        #關(guān)閉連接
        self.conn.close()
3.獲取sql語(yǔ)句
》》讀取文件名稱
》》獲取表頭和類(lèi)型
》》生成SQL語(yǔ)句

#獲取sql語(yǔ)句
def get_sql(table_name,df,length=255):
    '''
    table_name:表名稱
    df:DataFrame數(shù)據(jù)結(jié)構(gòu)
    length:默認(rèn)是255
    '''
    
    #存儲(chǔ)sql語(yǔ)句列表
    create_list=[]
    #遍歷每一列
    for col in df.columns.tolist():
        #判斷數(shù)據(jù)類(lèi)型
        if df[col].dtypes=='float':
            #構(gòu)建sql語(yǔ)句
            sql_col=col+' '+'float'
            #添加到列表
            create_list.append(sql_col)
        #判斷數(shù)據(jù)類(lèi)型
        elif df[col].dtypes=='int64' or df[col].dtypes=='int32' or df[col].dtypes=='int':
            #構(gòu)建sql語(yǔ)句
            sql_col=col+' '+'int'
            #添加到列表
            create_list.append(sql_col)
         #判斷數(shù)據(jù)類(lèi)型
        elif df[col].dtypes=='datetime64[ns]':
             #構(gòu)建sql語(yǔ)句
            sql_col=col+' '+'datetime'
            #添加到列表
            create_list.append(sql_col)
        else:
            #構(gòu)建sql語(yǔ)句
            sql_col=col+' '+f'varchar({length})'
            #添加到列表
            create_list.append(sql_col)
    #添加主鍵,替換列表中不必要內(nèi)容
    table_str='id int(64) primary key not null auto_increment,'+str(create_list).replace('[','').replace(']','').replace("'","")
    #設(shè)置引擎
    sql_create=f'''create table if not exists {table_name}({table_str})'''+' engine=innodb default charset=utf8'
    #返回sql語(yǔ)句
    return sql_create

pYYBAGP4YIKAEszUAABZytDg7Ws470.png
4.生成數(shù)據(jù)庫(kù)表格
》》運(yùn)行SQL語(yǔ)句生成表格

#遍歷該目錄下文件
for files in get_path('./'):
    #獲取文件名稱
    name=files[1]
    #讀取表格
    df=pd.read_excel(files[0])
    #獲取sql語(yǔ)句
    sql=get_sql(name,df)
    #連接MySQL
    conn=Mysql_connect('127.0.0.1','root','253611','test')
    #輸出sql語(yǔ)句
    print(sql+'n')
    #運(yùn)行sql語(yǔ)句
    conn.run_sql(sql)

poYBAGP4YJaAOORAAABrCyiYcZQ955.png
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    782

    瀏覽量

    44952
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    578

    瀏覽量

    25280
  • csv
    csv
    +關(guān)注

    關(guān)注

    0

    文章

    39

    瀏覽量

    6012
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    labviEW中使用LabSQL在數(shù)據(jù)庫(kù)創(chuàng)建

    的說(shuō)明請(qǐng)搜索百度,另外需要下載LabSQL才能運(yùn)行這個(gè)程序。補(bǔ):程序中最后應(yīng)該加一個(gè)別Connection Close.vi的,不知怎么忘了加了,在使用中是要加上的。 對(duì)于創(chuàng)建新的ACCESS數(shù)據(jù)庫(kù)而不是在現(xiàn)在的數(shù)據(jù)庫(kù)里面新建
    發(fā)表于 03-23 10:38

    有個(gè)excel數(shù)據(jù)表 想導(dǎo)入鴻蒙數(shù)據(jù)庫(kù),求sqlite數(shù)據(jù)使用文檔?

    有個(gè)excel 數(shù)據(jù)表 想導(dǎo)入鴻蒙數(shù)據(jù)庫(kù), 求sqlite數(shù)據(jù)使用文檔?
    發(fā)表于 06-09 10:10

    創(chuàng)建與使用數(shù)據(jù)庫(kù)課程

      本章要點(diǎn)                 創(chuàng)建數(shù)據(jù)庫(kù)是實(shí)施數(shù)據(jù)庫(kù)
    發(fā)表于 04-14 16:01 ?0次下載

    如何創(chuàng)建目標(biāo)數(shù)據(jù)庫(kù)

    如何創(chuàng)建目標(biāo)數(shù)據(jù)庫(kù) 在文您將學(xué)習(xí)創(chuàng)建目標(biāo)數(shù)據(jù)庫(kù)和所有與發(fā)起方數(shù)據(jù)庫(kù)不存在依賴關(guān)系的 Service Broker 目標(biāo)對(duì)
    發(fā)表于 03-26 11:54 ?1390次閱讀

    JAVA教程之創(chuàng)建與刪除數(shù)據(jù)庫(kù)中的

    JAVA教程之創(chuàng)建與刪除數(shù)據(jù)庫(kù)中的,很好的JAVA的資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-13 09:47 ?3次下載

    數(shù)據(jù)庫(kù)教程之數(shù)據(jù)庫(kù)創(chuàng)建與管理詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫(kù)教程之數(shù)據(jù)庫(kù)創(chuàng)建與管理詳細(xì)資料免費(fèi)下載。內(nèi)容包括了:SQL Server數(shù)據(jù)庫(kù)概述, 創(chuàng)建
    發(fā)表于 10-19 10:41 ?18次下載
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b>教程之<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的<b class='flag-5'>創(chuàng)建</b>與管理詳細(xì)資料免費(fèi)下載

    創(chuàng)建新的數(shù)據(jù)庫(kù)和更改SQL Server CE數(shù)據(jù)庫(kù)中的數(shù)據(jù)操作教程免費(fèi)下載

    SQL Server CE 中的數(shù)據(jù)庫(kù)是存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)集合。在可以存儲(chǔ)數(shù)據(jù)庫(kù)之前,必須創(chuàng)建數(shù)據(jù)庫(kù)
    發(fā)表于 09-19 11:28 ?5次下載

    怎么創(chuàng)建SQLite數(shù)據(jù)庫(kù)

    大家好,今天給大家分享一篇如何創(chuàng)建SQLite數(shù)據(jù)庫(kù)的文章。
    的頭像 發(fā)表于 02-22 16:21 ?6411次閱讀
    怎么<b class='flag-5'>創(chuàng)建</b>SQLite<b class='flag-5'>數(shù)據(jù)庫(kù)</b>

    數(shù)據(jù)庫(kù)建立|數(shù)據(jù)庫(kù)創(chuàng)建的方法?

    ,用于支持數(shù)據(jù)的管理、存儲(chǔ)和檢索。 手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù) 手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)是最基本的方法。它需要創(chuàng)建一個(gè)
    的頭像 發(fā)表于 07-14 11:15 ?1592次閱讀

    SQLite數(shù)據(jù)庫(kù)python的區(qū)別

    SQLite數(shù)據(jù)庫(kù)python的區(qū)別 SQLite是一種輕量級(jí)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),是一個(gè)嵌入式的數(shù)據(jù)庫(kù)引擎。Python是一種高級(jí)編程語(yǔ)
    的頭像 發(fā)表于 08-28 16:41 ?1130次閱讀

    python有什么用 如何用python創(chuàng)建數(shù)據(jù)庫(kù)

    python有什么用 如何用python創(chuàng)建數(shù)據(jù)庫(kù) Python是一種高級(jí)編程語(yǔ)言,可以用于開(kāi)發(fā)各種類(lèi)型的應(yīng)用程序和工具。它的廣泛應(yīng)用使它在
    的頭像 發(fā)表于 08-28 16:41 ?1481次閱讀

    python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢數(shù)據(jù)庫(kù) python數(shù)據(jù)庫(kù)連接

    python讀取數(shù)據(jù)庫(kù)數(shù)據(jù) python查詢數(shù)據(jù)庫(kù) python
    的頭像 發(fā)表于 08-28 17:09 ?2181次閱讀

    使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)

    使用SQL語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù) 在今天的信息社會(huì)中,數(shù)據(jù)庫(kù)是信息化建設(shè)的關(guān)鍵要素之一,已經(jīng)成為企業(yè)和組織的重要管理工具。創(chuàng)建數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 08-28 17:09 ?4537次閱讀

    sql怎么用代碼創(chuàng)建數(shù)據(jù)庫(kù)

    sql怎么用代碼創(chuàng)建數(shù)據(jù)庫(kù) SQL是一種結(jié)構(gòu)化查詢語(yǔ)言,用于通過(guò)編程語(yǔ)言與數(shù)據(jù)庫(kù)進(jìn)行通信。它允許用戶從數(shù)據(jù)庫(kù)中檢索、修改和刪除數(shù)據(jù)。在本文中
    的頭像 發(fā)表于 08-28 17:09 ?3083次閱讀

    mysql數(shù)據(jù)庫(kù)如何創(chuàng)建數(shù)據(jù)表

    MySQL是一種常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),可以用于創(chuàng)建和管理數(shù)據(jù)表。下面是一篇詳細(xì)的關(guān)于MySQL數(shù)據(jù)庫(kù)如何創(chuàng)建
    的頭像 發(fā)表于 11-21 11:08 ?2226次閱讀