python csv文件创建时间_记录 python 根据csv文件自动创建表插入数据
# -*- coding: utf-8 -*-
importos
importpymysql
importpandas aspd
# 1.連接 Mysql 數據庫
try:
conn = pymysql.connect(host='localhost', user='root', password='sq8813', db='db_test', charset='utf8')
cur = conn.cursor()
print('數據庫連接成功!')
print(' ')
except:
print('數據庫連接失敗!')
# 2.讀取任意文件夾下的csv文件
#獲取程序所在路徑及該路徑下所有文件名稱
path = os.getcwd()
files = os.listdir(path)
#遍歷所有文件
i = 0
forfile infiles:
#判斷文件是不是csv文件
iffile.split('.')[-1] in['csv']:
i += 1
#構建一個表名稱,供后期SQL語句調用
filename = file.split('.')[0]
filename = 'tab_'+ filename
#使用pandas庫讀取csv文件的所有內容,結果f是一個數據框,保留了表格的數據存儲方式,是pandas的數據存儲結構。
f = pd.read_csv(file, encoding='gbk') # 注意:如果報錯就改成 encoding='utf-8' 試試
#print(f)
# 3.計算創建字段名稱和字段類型的 SQL語句片段
# 3.1 獲取數據框的標題行(即字段名稱),將來作為sql語句中的字段名稱。
columns = f.columns.tolist()
print(columns)
# 3.2 將csv文件中的字段類型轉換成mysql中的字段類型
types = f.ftypes
field = [] #用來接收字段名稱的列表
table = [] #用來接收字段名稱和字段類型的列表
foritem incolumns:
if 'int' intypes[item]:
char = item + ' INT'
elif 'float' intypes[item]:
char = item +' FLOAT'
elif 'object' intypes[item]:
char = item +' VARCHAR(255)'
elif 'datetime' intypes[item]:
char = item + ' DATETIME'
else:
char = item + ' VARCHAR(255)'
table.append(char)
field.append(item)
# 3.3 構建SQL語句片段
# 3.3.1 將table列表中的元素用逗號連接起來,組成table_sql語句中的字段名稱和字段類型片段,用來創建表。
tables = ','.join(table)
print(tables)
#3.3.2 將field列表中的元素用逗號連接起來,組成insert_sql語句中的字段名稱片段,用來插入數據。
fields = ','.join(field) #字段名
print(fields)
# 4. 創建數據庫表
# 4.1 #如果數據庫表已經存在,首先刪除它
cur.execute('drop table if exists {};'.format(filename))
conn.commit()
# 4.2 構建創建表的SQL語句
table_sql = 'CREATE TABLE IF NOT EXISTS '+ filename + '('+ 'id0 int PRIMARY KEY NOT NULL auto_increment,'+ tables + ');'
print('table_sql is: '+ table_sql)
# 4.3 開始創建數據庫表
print('表:'+ filename + ',開始創建…………')
cur.execute(table_sql)
conn.commit()
print('表:'+ filename + ',創建成功!')
# 5.向數據庫表中插入數據
print('表:'+ filename + ',開始插入數據…………')
# 5.1 將數據框的數據讀入列表。每行數據是一個列表,所有數據組成一個大列表。也就是列表中的列表,將來可以批量插入數據庫表中。
values = f.values.tolist() #所有的數據
print(values)
# 5.2 計算數據框中總共有多少個字段,每個字段用一個 %s 替代。
s = ','.join(['%s' for_ inrange(len(f.columns))])
print("s is ",s)
# 5.3 構建插入數據的SQL語句
insert_sql = 'insert into {}({}) values({})'.format(filename,fields,s)
print('insert_sql is:'+ insert_sql)
# 5.4 開始插入數據
cur.executemany(insert_sql, values) #使用 executemany批量插入數據
conn.commit()
print('表:'+ filename + ',數據插入完成!')
print(' ')
print('任務完成!共導入 {} 個CSV文件。'.format(i))
總結
以上是生活随笔為你收集整理的python csv文件创建时间_记录 python 根据csv文件自动创建表插入数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二手房交易市场搬到什么地方去了万西西安二
- 下一篇: java文件递归_java递归处理文件夹