对从mysql读取的数据进行合规性检测

来源:互联网 发布:淘宝阿里旅行客服在哪 编辑:程序博客网 时间:2024/04/30 12:51

假设编写一个登录交换机的脚本,登录交换机时,交换要求输入账号、密码及enable(super)密码,而用于登录交换机所需要的信息至少需包括:交换机IP、登录账号、密码及enable(super)密码,这些信息均存在mysql数据库中。脚本需从数据库中读取该信息。所以读取的数据交换机IP、登录账号、密码及enable(super)密码均不能为空。如果为空,则登录交换机肯定失败,无需再执行后面的登录代码了。所以有必要对从数据库中读取的数据做合规性检测。

现数据库中的信息如下:

mysql> select * from TSwitch;+--------------+----------+----------+----------------+| IP           | Username | Password | EnablePassword |+--------------+----------+----------+----------------+| 192.168.0.80 | admin    | cisco    | cisco          || 192.168.0.70 | admin    | H3c      | NULL           || 192.168.0.60 | NULL     | huawei   | huawei         |+--------------+----------+----------+----------------+

从上标可看出,只有第一行的数据是合规的。第二数据的EnablePassword值为空、第三行数据的Username为空,所以数据不合规,如何进行检测。

[root@localhost python]# cat chkparavalid.py #!/usr/bin/env python#encoding=utf-8import MySQLdbdef argisvalid(mytuple):    "return 0 if the mylist including Null"    myres=1    for m in mytuple:        if m==None:            myres=0            continue    return myresdef main():    conn= MySQLdb.connect(        host='localhost',        port = 3306,        user='root',        passwd='123456',        db ='mydb',        )    cur = conn.cursor()    sqlstr1=cur.execute("select IP,Username,Password,EnablePassword from TSwitch");    sqlset1=cur.fetchmany(sqlstr1)    for sqlres1 in sqlset1:        print argisvalid(sqlres1)    cur.close()    conn.commit()    conn.close()if __name__=='__main__':    main()
上面代码执行的结果是,如果数据不合规,则输出0,合规则输出1.

[root@localhost python]# python chkparavalid.py 100

该脚本的关键函数为argisvalid,作用为参数(list或tuple)中如果含None值则返回0,否则返回1。



0 0
原创粉丝点击