python工具

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、python工具

示例:是基于一种工具,该工具是为了解决数据分析任务而创建的。

1时间操作

# -*- coding:utf-8 -*-
# author: cai bao jun
# datetime: 2022/12/5 9:51
import datetime

# 获取当前时间
now1 = datetime.datetime.now()

# now2 = datetime.datetime(now1.year, now1.month, now1.day, now1.hour, now1.minute, now1.second)
# now3 = datetime.datetime.strftime(now2, "%Y-%m-%d %H:%M:%S")  # datetime===>str  ## "%Y-%m-%d %H:%M:%S.%f"
# now4 = datetime.datetime.strptime(now3, "%Y-%m-%d %H:%M:%S")  # str ===> datetime

## datetime 属性

from datetime import datetime

t = datetime.now()
print(t)
print(t.year)
print(t.month)
print(t.day)
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)

# 创建datetime

# 省略的参数默认为0
t = datetime(2021, 1, 1, 14, 30, 59, 200)
print(t)
print(type(t))

print('======')

# string转为datetime
s = "2021-1-1 12:30:59.200"
t = datetime.strptime(s, "%Y-%m-%d %H:%M:%S.%f")
print(t)
print(type(t))


# datetime转为string

from datetime import datetime

t = datetime(2021, 1, 1, 12, 30, 59, 200)
print(t)
print(t.strftime("%Y/%m/%d %Hh%Mm%S.%fs"))
print(type(t.strftime("%Y/%m/%d %Hh%Mm%S.%fs")))

# datetime转为时间戳
from datetime import datetime

t = datetime(2021, 1, 1, 12, 30, 59, 200)
print(t)
print(t.timestamp())
print(type(t.timestamp()))


# 注意:datetime - datetime得到timedelta,timedelta没有时间戳
from datetime import datetime

t1 = datetime(2021, 1, 1)
t2 = datetime(2021, 1, 2)
dt = t2 - t1
print(dt)
print(type(dt))


# 时间戳转为datetime
from datetime import datetime

stamp = 1609475459.0002
t = datetime.fromtimestamp(stamp)
print(t)
print(type(t))


2 入参修改进入程序

import argparse

parser = argparse.ArgumentParser(description='姓名')
parser.add_argument('--family', type=str, default='张',help='姓')
parser.add_argument('--name', type=str, default='三', help='名')
args = parser.parse_args()

#打印姓名
total = args.family + args.name
print(total)
print('=====2======')
# print(args.family+args.name)


if __name__ == '__main__':
    print(args.name)
    print(type(args.name))
    print(args.family)
    print(type(args.family))

    print("=====end=====")
    pass

3数据库操作

# -*- coding:utf-8 -*-
# author: cai bao jun
# datetime: 2022/12/2 17:02
from logger import logger
import pymysql
import datetime
import json

class MysqlConfig(object):
    database = "testcc"  # 测试 trainerN
    # database = "trainerN"  # zhegnshi
    host = "192.168.1.21"
    user = "khanx"
    port = 3306
    password = "Ylyx@2020"

# class MysqlConfig(object):
#     database = "test2023"  # 测试 trainerN
#     host = "127.0.0.1"
#     user = "root"
#     port = 3306
#     password = "root"

# Mysql数据库相关操作
class DMLMysql(object):

    def __init__(self, host, database, user, password, port):
        try:
            self.database = database
            print(f"database==={database}")
            self.conn = pymysql.connect(host=host, user=user, password=password, database=database, port=port)
            self.cursor = self.conn.cursor()
        except Exception as e:
            logger.error(f"database connect error message is {str(e)}")
            pass
        pass

    def sql(self):
        pass

    def execute_sql(self, sqlQuery, value):
        """

        :param sqlQuery: 拼接好的sql语句
        :param value: 需要拼接的值
        :return:
        """
        try:
            self.conn.ping(reconnect=True)  # 超时断开重连
            self.cursor.execute(sqlQuery, value)
            self.conn.commit()
            logger.info('数据执行成功!')
        except Exception as e:
            logger.error(f"insert database name is {self.database} error info is:{str(e)},sql is : {sqlQuery}")
            self.conn.rollback()

    def select_sql(self,sqlQuery, value):

        try:
            self.conn.ping(reconnect=True)  # 超时断开重连
            self.cursor.execute(sqlQuery, value)
            ret = self.cursor.fetchall()
            logger.info('查询数据执行成功!')
            return ret
        except Exception as e:
            logger.error(f"insert database name is {self.database} error info is:{str(e)},sql is : {sqlQuery}")
            self.conn.rollback()

    def update_train_v_datagroup_batch(self,userid,vision,primarykeys):
        update_sql = f"update dataset_datagroupingdata set is_train=1 where loginuser={userid} and vision='{vision}' and primarykey in ('{primarykeys}')"
        # update_sql = """update dataset_datagroupingdata set is_train=1 where loginuser=%s and vision=%s and primarykey in %s"""
        try:
            self.conn.ping(reconnect=True)  # 超时断开重连
            self.cursor.execute(update_sql)
            self.conn.commit()
            return True
        except Exception as e:
            print(f"error====>> update database name is {self.database} error info is:{str(e)},sql is : {update_sql}")
            self.conn.rollback()
            return False

    def __del__(self):
        self.conn.close()


# 运用 批量设置一个字段;
def func3():
    li = ["1.2.840.40823.1.1.1.2.1635121048.554.885.330",
          "1.2.840.40823.1.1.1.2.1635121157.835.166.611",
          "1.2.840.40823.1.1.1.2.1635121221.437.767.212",
          "1.2.840.40823.1.1.1.2.1635121389.277.608.53",
          "1.2.840.40823.1.1.1.2.1635121422.858.189.634"]
    tmp_tup_str = "','".join(li)
    db.update_train_v_datagroup_batch(userid=1,vision='2023-03-14',primarykeys=tmp_tup_str)
    pass

# 处理表中插入多张图片的路径
def func1():

    # 处理多张图片路径保存问题
    import json
    # 插入
    # path = ['/home/ylnet/data/cbj/train-data/1/2023-03-20/1.2.840.40823.1.1.1.2.1635121048.554.885.330/b8b176cb866411ec9f922cea7fb33939.jpg', '/home/ylnet/data/cbj/train-data/1/2023-03-20/1.2.840.40823.1.1.1.2.1635121157.835.166.611/4c51b200874b11ec9f922cea7fb33939.jpg']
    # path = json.dumps(path)
    # insertsql = f"INSERT INTO `test2023`.`dataset_datagroupingdata`(`finding`, `empression`, `is_train`, `is_test`, `is_validation`, `primarykey`, `filePath`, `is_list`, `is_delete`, `type`, `creattime`, `updatetime`, `sex`, `age`, `loginuser`, `primarylabel`, `primaryfinding`, `vision`, `examination`) VALUES ('', '两肺可疑点状影,请随访复查及必要时行CT检查。', 1, 0, 0, '1.2.840.999.999.999.999.999', '{path}', 0, 0, 1, '2023-03-21 16:17:55.000000', '2023-03-21 16:17:55.000000', '男', 50, 1, '[肺实质-结节状影-位置-肺野-右肺,肺纹理-增多-位置-肺野-右肺,肺纹理-紊乱-位置-肺野-左肺,肺实质-结节状影-位置-肺野-左肺,肺纹理-紊乱-位置-肺野-右肺,肺纹理-增多-位置-肺野-左肺]', '两肺纹理明显增多、紊乱,隐约可见点状影存在,心影大小正常范围,纵隔影无明显增宽,两膈面光滑,两肋膈角锐利。', '2023-03-14', '胸部后前位片');"
    # db.execute_sql(insertsql,value=None)

    # # 更新
    # table = "`test2023`.`dataset_datagroupingdata`"
    # path = ['/home/b.jpg', '/home/4c51.jpg']
    # path2 = json.dumps(path)
    # primarykey = "1.2.840.999.999.999.999.999"
    # updatesql = f'''UPDATE {table} SET `filePath` = '{path2}' WHERE `primarykey` = '{primarykey}';'''
    # db.execute_sql(updatesql, value=None)

    # 取路径
    table = "`test2023`.`dataset_datagroupingdata`"
    primarykey = "1.2.840.999.999.999.999.999"
    sele_sql = f"select filePath from {table} where primarykey='{primarykey}'"
    ret = db.select_sql(sqlQuery=sele_sql, value=None)
    for r1 in ret:
        r1 = json.loads(r1[0])
        print(r1)
        # print(r1[1])
    pass


# 获取某位老师的算法标签
def func2():
    pass
    ### 获取 某位老师的算法标签
    li = []
    sql = "select labelname from dataset_datasetstate where loginuser=1 and vision='2023-04-04';"
    res = db.select_sql(sqlQuery=sql, value=None)
    for i in res:
        li.append(i[0])
    print(li)
    print(len(li))


# 获取某位老师的标签阈值
def func5():
    pass
    ### 获取 某位老师的算法标签
    li = []
    data = {}
    # sql = "select labelname from dataset_datasetstate where loginuser=2 and vision='2023-04-04';"
    sql = "select labelname,threshold from dataset_labelthreshold where loginuser=2;"
    res = db.select_sql(sqlQuery=sql, value=None)
    for i in res:
        data[i[0]] = i[1]
        # li.append(i[0])
    # print(li)
    print(len(li))
    print(data)

# 将算法同学训练数据imagedata 表里的数据拷贝到数据分组功能表里dataset_datagroupingdata用于数据分组回传
def func4():
    sql = "insert into dataset_datagroupingdata(finding, empression, is_train, is_test, is_validation, " \
          "primarykey, filePath, is_list, is_delete, type, " \
          "creattime, updatetime, sex, age, loginuser, " \
          "primarylabel,primaryfinding,vision,examination) " \
          "select finding, empression, is_train, is_test, is_validation, " \
          "primarykey, filePath, is_list, is_delete, type, " \
          "creattime, updatetime, sex, age, loginuser, " \
          "primarylabel,primaryfinding,vision,'腹部前后位片' from dataset_cleardata where loginuser=1 and vision='2023-04-07';"
    db.execute_sql(sqlQuery=sql, value=None)
    pass



if __name__ == '__main__':
    now1 = datetime.datetime.now()
    now2 = datetime.datetime(now1.year, now1.month, now1.day, now1.hour, now1.minute, now1.second)
    now3 = datetime.datetime.strftime(now2, "%Y-%m-%d %H:%M:%S")  # datetime===>str  ## "%Y-%m-%d %H:%M:%S.%f"
    now4 = datetime.datetime.strptime(now3,"%Y-%m-%d %H:%M:%S")  # str ===> datetime
    print(now4, type(now4))

    db = DMLMysql(host=MysqlConfig.host, database=MysqlConfig.database, user=MysqlConfig.user,
                  password=MysqlConfig.password, port=MysqlConfig.port)
    # # sql = "select count(0) from dataset_snrdata where vision='2022-12-01'"
    # # sql = "select updatetime from dataset_snrdata where primarykey='1.2.840.86.755.8.10146.1.14984.1'"
    # sql = "update dataset_snrdata set updatetime=%s where primarykey='1.2.840.86.755.8.10146.1.14984.1'"
    # db.execute_sql(sqlQuery=sql,value=(now3))
    #
    #
    # # db.select_sql(sqlQuery=sql,value=None)
    # # res = db.cursor.fetchall()[0][0]
    # # print(res)
    # # print(type(res))
    # func1()
    # func4()
    func5()

4 redis操作

# -*- coding:utf-8 -*-
# author: cai bao jun
# datetime: 2022/12/5 10:48
# Redis 相关操作
import redis
from logger import logger


class DMLRedis(object):

    def __init__(self, host, port, password, db_name):
        # self.redis_conn = redis.Redis(host=host, port=port, password=password, db=db_name,decode_responses=True)
        self.pool = redis.ConnectionPool(host='192.168.10.232', port=6379,max_connections=3)
        self.redis_conn = redis.Redis(connection_pool=self.pool,db=db_name, decode_responses=True)

        try:
            self.redis_conn.ping()  # 判断redis是否链接成功
        except Exception as e:
            logger.error(f"redis connect error info is: {str(e)}")
        pass

    def set_string(self, key, value):
        self.redis_conn.set(key, value)


if __name__ == '__main__':
    host = "192.168.10.232"
    port = 6379
    password = None
    db_name = 0
    rdb = DMLRedis(host, port, password, db_name)
    # rdb.set_string('k5',66)

    mset_da = {"k1": 1,"k2": 2,"k3": 3}
    rdb.redis_conn.mset(mset_da)
    pass

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值