Day06 学习笔记

正则校验示例

  • 身份编号:^(\d{18}|\d{17}X|\d{15})$
    • 说明:匹配 18 位纯数字、17 位数字 + 大写 X、或 15 位纯数字。
    • 使用:m = re.match(pattern, s);匹配成功后 m.group() 取整段结果。
  • 邮箱格式:^[0-9a-zA-Z_-]+@([0-9a-zA-Z]+\.){1,2}(com|cn|net|org)$
    • 说明:用户名由字母/数字/下划线/连字符组成;域名为 1~2 个以点分隔的部分;顶级域限制在 com/cn/net/org。

读文件并按行处理

  • 打开文件并逐行读取:

    1
    2
    3
    4
    5
    6
    7
    f = open(path)
    while True:
    line = f.readline()
    if not line:
    break
    # 对 line 做解析与处理
    f.close()
  • 正则解析:为日志格式准备提取模式,匹配出诸如时间、源 IP/端口、目标 IP/端口、字节数等字段用于后续入库。

Oracle 数据库基本操作(cx_Oracle)

  • 建立连接与获取游标:

    1
    2
    3
    import cx_Oracle
    db = cx_Oracle.connect("user", "password", "host:port/service")
    cursor = db.cursor()
  • 建表与提交:

    1
    2
    cursor.execute("CREATE TABLE PYTHON_DATA(time varchar(40), srcip varchar(40), sport number(20), dstip varchar(40), dport number(20), revd number(20), sent number(20))")
    db.commit()
  • 插入数据与事务:

    1
    2
    3
    4
    5
    6
    cursor.execute(
    "INSERT INTO PYTHON_DATA(time, srcip, sport, dstip, dport, revd, sent) VALUES (:1, :2, :3, :4, :5, :6, :7)",
    (time, srcip, sport, dstip, dport, revd, sent)
    )
    db.commit() # 正常提交
    # 出错时可 rollback:db.rollback()
  • 关闭:处理完成后关闭游标与连接:cursor.close()db.close()

运行流程组织

  • 典型结构:
    • 连接数据库并准备表结构;
    • 逐行读取日志,正则解析出字段;
    • 将解析结果插入数据库,必要时提交或回滚;
    • if __name__ == "__main__": 中串联初始化与主流程函数。

Day06 学习笔记
https://blog.pangcy.cn/2018/10/20/后端编程相关/python/python2基础/Day06 学习笔记/
作者
子洋
发布于
2018年10月20日
许可协议