美文网首页懒人处理方法
【Python】批处理文件并插入到mysql数据库

【Python】批处理文件并插入到mysql数据库

作者: 一只余 | 来源:发表于2017-07-14 11:02 被阅读230次

    问题

    最近在项目的时候遇到一个头大的问题,客户手中有份人员名单和人员照片。需要把人员信息数据库表照片信息补全,就是说要将人员照片和数据库人员一一对应。起初项目小伙伴说要手动录入写一个头像上传的程序一个个上传人员照片。几百号人的数据说多也不多说少也不少,如果全部手动录入不说麻烦的问题,可能中途还容易出错。我看了一眼人员照片文件是以人名命名,正好和数据库人员数据REALNAME字段相对应。其次重名人名并不多大概几个而已,可以之后做单独处理。人生苦短我用python,何必自找苦吃呢

    需要的结果是什么

    前提要素:

    1. t_users表中REALNAME和照片命名是对应关系
    2. 照片对应之后需要重命名为当时的时间戳
    3. t_users表IMGURL存入图片所在地址以及图片名称

    python酸爽初体验

    使用python2.7 pip安装mysql.connector库失败 最后在Oracle官网去下了安装mysql.connector python版本瞬间跳出了坑

    贴出执行代码(参考自度娘)

    #!/usr/bin/python
    #coding=utf-8
    import os
    import os.path
    import time
    import mysql.connector
    import time
    rootdir = '/Users/julyyu/imgs/pics'    # 指明被遍历的文件夹
    
    conn=mysql.connector.connect(user='root',password='xxx',host='xxx',database='xxx')
    c = conn.cursor()
    for parent,dirnames,filenames in os.walk(rootdir):    #三个参数:分别返回1.父目录 2.所有文件夹名字(不含路径) 3.所有文件名字
        for filename in filenames:                        #输出文件信息
            (name,extension) = filename.split(".")
            print "filenameonly is:" + name  #输出图片名
            if name:
                newname = str(int(time.time())) + ".jpg"  #时间戳命名
                print "newname is:" + newname 
                os.rename(rootdir+"/"+filename , rootdir+"/"+newname) #对图片进行重命名
                tempname = "/lzgl/" +  newname #数据库存入的图片路径
                query = "update  t_users set IMGURL = '" + tempname +  "' where REALNAME = '" + name + "'"      
                c.execute(query)
                conn.commit()
                time.sleep(2)  #反正时间戳重复 睡两秒 也可以睡0.5 这样处理会更快一些 
    c.close()
    conn.close()
    

    之后又对图片进行了压缩操作 原图每张10+M的一寸照无法忍, 代码如下(参考出处)

    Image库是需要下载安装PIL

    #!/usr/bin/python
    #coding:utf-8
    from PIL import Image 
    import os
    
    #图片压缩批处理  
    def compressImage(srcPath,dstPath):  
        for filename in os.listdir(srcPath):  
            #如果不存在目的目录则创建一个,保持层级结构
            if not os.path.exists(dstPath):
                    os.makedirs(dstPath)        
    
            #拼接完整的文件或文件夹路径
            srcFile=os.path.join(srcPath,filename)
            dstFile=os.path.join(dstPath,filename)
            print srcFile
            print dstFile
    
            #如果是文件就处理
            if os.path.isfile(srcFile):     
                #打开原图片缩小后保存,可以用if srcFile.endswith(".jpg")或者split,splitext等函数等针对特定文件压缩
                sImg=Image.open(srcFile)  
                w,h=sImg.size  
                print w,h
                dImg=sImg.resize((w/2,h/2),Image.ANTIALIAS)  #设置压缩尺寸和选项,注意尺寸要用括号
                dImg.save(dstFile) #也可以用srcFile原路径保存,或者更改后缀保存,save这个函数后面可以加压缩编码选项JPEG之类的
                print dstFile+" compressed succeeded"
    
            #如果是文件夹就递归
            if os.path.isdir(srcFile):
                compressImage(srcFile,dstFile)
    
    if __name__=='__main__':  
        compressImage("/Users/julyyu/imgs/tempa","/Users/julyyu/imgs/temps")
    

    相关文章

      网友评论

        本文标题:【Python】批处理文件并插入到mysql数据库

        本文链接:https://www.haomeiwen.com/subject/ywqwhxtx.html