我们要读取CSV文件的内容,并且要把数据存入数据库

我们要读取CSV文件的内容,并且要把数据存入数据库

首先与数据库建立连接

port是数据库端口一般3306,user是创建数据库的用户名,password是数据库连接密码,db数据库名称

#建立连接
conn = pymysql.connect(host='localhost', port=3306, user='***', password='****', db = db_name, charset='utf8')
#建立游标对象
cursor = conn.cursor()

读取csv文件的内容

url是你本地csv文件的路径,注意如果路径带中文名不要直接pd.read_csv(“url”),会报错

#调用pandas,获得.csv文件
    f = open('url')
    df = pd.read_csv(f)

之后就循环遍历每条数据,并且插入数据库

每条数据单独添加,故需要每次重写sql语句

    for each in df.values:
        #每条数据应该单独添加,故需要重写sql语句
        sql = 'insert into ' + table_name + ' values('
        for i,n in enumerate(each):
            if i < (len(each) -  1):
                sql = sql + str(n) + ','
            else:
                sql = sql + str(n) + ')'
        sql = sql + ';'
        #print(sql)
        #一条sql语句生成,提交执行
        cursor.execute(sql)
        conn.commit()

踩过的坑

1、建立连接,数据库一定要存在,名称一定要对,否则报错database不存在
2、pandas读取.csv文件,但是文件路径有中文,故需要用以下方式读取,若直接 df = pd.read_csv(‘url’)会报错,巴拉巴拉一大堆
f = open(‘url’)
df = pd.read_csv(f)
3、数据库中要先创建好表table,并且存放格式一定要和table表中的格式对应

完整代码

import pymysql
import pandas as pd


def get_con(db_name):
    #建立连接
    conn = pymysql.connect(host='localhost', port=3306, user='***', password='***', db = db_name, charset='utf8')
    #建立游标对象
    cursor = conn.cursor()
    return conn, cursor

def insert_Data(db_name, table_name):
    #调用get_con返回conn, cursor
    conn, cursor = get_con(db_name)
    #调用pandas,获得.csv文件
    f = open('url')
    df = pd.read_csv(f)
    #循环遍历df,获取每一条数据
    #count记录数据条数
    count = 0
    for each in df.values:
        #每条数据应该单独添加,故需要重写sql语句
        sql = 'insert into ' + table_name + ' values('
        for i,n in enumerate(each):
            if i < (len(each) -  1):
                sql = sql + str(n) + ','
            else:
                sql = sql + str(n) + ')'
        sql = sql + ';'
        #print(sql)
        #一条sql语句生成,提交执行
        cursor.execute(sql)
        conn.commit()
        #每提交一次,count加一
        count = count + 1

    print(str(count) + '条数据提交成功!')
    return conn, cursor

def main(db_name, table_name):
    conn, cursor = insert_Data(db_name, table_name)
    conn.close()
    cursor.close()

if __name__ == '__main__':
    main('map_data', 'pipedatas')

附数据库增删改查操作命令

数据库基本操作:增删改查
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ —like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1

    原文作者:xie_laotou
    原文地址: https://blog.csdn.net/xie_laotou/article/details/84644898
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞