pymysql用like模糊匹配格式以及nan没有全部转换成None的解决

随手一笔记录数据处理的拔脚毛问题,大前提是万级及以下数据量,这是个能解决问题的办法。

import os
import datetime
import pymysql

def update_rewritten_mark(cur):
    current_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    zczhm_query = """select a.ZCZBHHZBAPZBH from origRegFrWebsite a left join origRegItems b on a.ZCZBHHZBAPZBH = b.ZCZBHHZBAPZBH where b.ZCZBHHZBAPZBH is null;"""
    cur.execute(zczhm_query)
    zczhm_info = cur.fetchall()
    zczhm_list = []
    for zczhm_item in zczhm_info:
        zczhm_list.append(zczhm_item[0])
    # print(zczhm_list) for debug
    # print(len(zczhm_list)) for debug
    
    for zczhm in zczhm_list:
#重点就看下面两行
        rewritten_mark_update= """Update origRegList set rewrittenMark=rewrittenMark+1,updateTime="{}" WHERE certName like """.format(current_time) # 重点行
        rewritten_mark_update = rewritten_mark_update + '"%' + zczhm + '%"' #重点行
        cur.execute(rewritten_mark_update)
    cur.close()

if __name__ == '__main__':

    # 与数据库建立连接
    password = os.environ.get('mySQLPW')
    conn = pymysql.connect(host='127.0.0.1', user='root', password=password, database='some_database',
                           port=3306, autocommit=True)
    update_rewritten_mark(conn.cursor())
    conn.close()
    print("Finished!\n")

至今没搞明白怎么不同格子一样显示nan定义会不同,有些格子是np.nan的性质,有些可以直接替换成None。这个的代码太长,就缩减下只放解决问题的snippet。

其中有个好玩的地方就是np.nan的判断可以通过,它不是它,来找出。服!记得早年写过一篇float(inf),这个np.nan的存在逻辑和它一脉相承。

for file_item in files_list:      
        #print(file_item) for Debug
        df_csv = pd.read_csv(file_item)
        #rename column names
        df_csv.rename(columns=preconfig.dict_JsReg, inplace=True)
        df_csv["updateTime"] = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        df_csv.reindex(columns=table_column_list)
        df_csv = df_csv.where(pd.notnull(df_csv), None) #一部分空格子通过这个愉快的转为了None
        for index, row in df_csv.iterrows():
            valuestr_df = tuple(row.values)
            list_values = []
            for item in valuestr_df: #为了None NaN问题,不然一部分的Nan无法变None,无法导入SQL
                if item != item:
                    item = None
                list_values.append(item)
            valuestr = tuple(list_values)         
            cur.execute(query, valuestr)
        print(file_item + " is finished!")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

取啥都被占用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值