python之手机号码的验证查询

#!usr/bin/python3
#encoding:UTF-8
 
 
'''
功能:判断手机号是否存在某个库里面

中国电信号段
133、149、153、173、177、180、181、189、191、199

中国联通号段
130、131、132、145、155、156、166、171、175、176、185、186

中国移动号段
134、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、198
'''
 
import re
import MySQLdb  as  mdb
import traceback

class Select_Number:
    host = ''
    port = 0 
    user = '' 
    passwd = '' 
    db = '' 
    tablename = '' 
    table_fieldname = '' 
    phone_Number = ' '
    def __init__(self, host, port, user, passwd, db, tablename, table_fieldname, phone_Number):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.tablename = tablename
        self.table_fieldname = table_fieldname
        self.phone_Number = phone_Number

    def connect_Database(self):
        ##连接数据库
        L_phone = []        ##定义一个列表用于存放正确的电话号码
        
        try:
            conn = mdb.connect(host=self.host, port=self.port, user=self.user , passwd=self.passwd , db=self.db)
            cursor = conn.cursor(cursorclass=mdb.cursors.DictCursor) ##获得操作游标
            cursor.execute('SELECT %s FROM %s' % (self.table_fieldname, self.tablename))   ##执行选择语句
            r = cursor.fetchall()   ##查询所有的记录,以字典的方式返回
            print(r)
            for i in r:             
                # print(i[self.table_fieldname])
                phoneNumber = i[self.table_fieldname]
                flag = self.judgePhoneNumber(phoneNumber)    ##判断指定的手机号是否正确
                # print(flag)
                if flag == True:
                    L_phone.append(phoneNumber)    ##如果电话号码正确,则被加入到列表中
                else:
                    continue
            if str(self.phone_Number) in L_phone:       ##匹配电话号码是否存在
                print("%s is exist" % self.phone_Number)   ##存在则输出
            else:
                print("%s is not exist" % self.phone_Number)
            conn.commit()
        except Exception as e:
            print(e)
            traceback.print_exc()#发生错误时回滚
            conn.rollback()
        finally:
            cursor.close()  ##关闭游标
            conn.close()   ##关闭数据库连接




    def judgePhoneNumber(self, phoneNumber):   ##判断指定的手机号是否正确   
        if len(str(phoneNumber))!=11:    #首先判断是否是11位
            # print("phone number is not enough 11")
            flag=False
        else:
            if not str(phoneNumber).isdigit(): ##是否由数字组成
                flag=False
            else: 
                phone_rule=re.compile('^1[358]\d{9}$||^17[0-8]\d{8}$|^145\d{8}$|^149\d{8}$|^147\d{8}$|^166\d{8}$|^191\d{8}$|^198\d{8}$|^199\d{8}$')  #通过正则表达式匹配电话号码
                res_list=re.findall(phone_rule,str(phoneNumber))
                if res_list:
                    flag=True
                else:
                    flag=False
        return flag
    
    
# if __name__ == '__main__':
    '''
    host  ip地址
    port  端口号
    user  数据库用户
    passwd  数据库用户密码
    db      数据库名
    tablename   表名
    table_fieldname  表字段名
    '''

number = Select_Number('localhost', 3306, 'root', ' ', 'test', 'testuser', 'phone', '18333608826')
# number = Select_Number()
number.connect_Database()


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值