使用python读取csv文件,并将数据更新至mysql

import csv, MySQLdb, sys


# 处理数据库的函数

def mysql_database(sql_str, values):
    conn = MySQLdb.connect(host='192.168.2.20', user='root',passwd='123456')
    cursor = conn.cursor()
    conn.select_db('eldorajob')
    
    cursor.executemany(sql_str, values)
    conn.commit()
    
    cursor.close()
    conn.close()

def hardSkillDomain(reader):
    values=[]
    for obj1 in reader:
        values.append((obj1['HardSkillDomainID'], obj1['DomainName']))
    return values

def domain(reader):
    values=[]
    for obj1 in reader:
        values.append((obj1['DomainID'], mdcode(obj1['DomainName'])))
    return values


# 处理转码的函数

def mdcode(str1):
    for c in ('utf-8', 'gbk', 'gb2312'):
        try:
            return str1.decode(c).encode('utf-8')
        except:
            pass
    return 'unknown'

#--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

if __name__ == "__main__":
    FILE_PATH = 'd:/csv/Domain_Table_Data.csv'
    
    INSERT_SQL = {'hardskilldomain' : 'insert into modules_hardskilldomain values(%s, %s)',
                  'domain'          : 'insert into modules_domain values(%s, %s)'}
    
    INSERT_VALUES = {'hardskilldomain' : hardSkillDomain,
                     'domain'          : domain}
    
    try:
        # get connection
        fd = open(FILE_PATH)
        dialect = csv.Sniffer().sniff(fd.readline())
        fd.seek(0)
        reader = csv.DictReader(fd, dialect = dialect)
        
        # insert into mysql database
        mysql_database(INSERT_SQL['domain'], INSERT_VALUES['domain'](reader))
    except:
        print sys.exc_info()[0],sys.exc_info()[1]
    finally:
        fd.close()
        
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

要处理的csv文件内容(第一行对应数据表中的字段名):

DomainID,DomainName
1,Agroalimentaire
2,Automobile
3,Banque/Finance
4,Biotechnologie
5,Chimie
6,Pharmaceutique
7,Enseignement
8,Edition/Publication
9,Informatique
10,Ingénierie
11,Métaux & Minéraux
12,Gestion des déchets
13,Services aux entreprises
14,Services aux particuliers
15,Institutionnel


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值