ip.db 读取和使用方法



import sqlite3 ##可以在 Python 程序中使用 SQLite 数据库
import time

class IPPool(object):
    ##存储ip的数据库,包括两张表ip_table和all_ip_table
    ##insert和建表语句绑定在一起

    def __init__(self,table_name):
        self.__table_name = table_name
        self.__database_name = "IP.db"   ##IPPool对应的数据库为IP.db
    ##初始化类,传入参数table_name
    
    
    def create(self):
        conn = sqlite3.connect(self.__database_name, isolation_level = None)
        conn.execute(
            "create table if not exists %s(IP CHAR(20) UNIQUE, PORT INTEGER, ADDRESS CHAR(50), TYPE CHAR(50), PROTOCOL CHAR(50))"
            % self.__table_name)
        print("IP.db数据库下%s表建表成功" % self.__table_name)
    ##建表语句

    
    def insert(self, ip):
        conn = sqlite3.connect(self.__database_name, isolation_level = None)
        #isolation_level是事务隔离级别,默认是需要自己commit才能修改数据库,置为None则自动每次修改都提交
        for one in ip:
            conn.execute(
                "insert or ignore into %s(IP, PORT, ADDRESS, TYPE, PROTOCOL) values (?,?,?,?,?)"
                % (self.__table_name),
                (one[0], one[1], one[2], one[3], one[4]))
        conn.commit() #提交insert 但是已经设置isolaion_level为None,所以应该不需要
        conn.close()

    def select(self,random_flag = False):
        conn = sqlite3.connect(self.__database_name,isolation_level = None)
        ##连接数据库
        cur=conn.cursor()
        #cursor用于接受返回的结果
        
        if random_flag:
            cur.execute(
                "select * from %s order by random() limit 1"
                % self.__table_name)
            result = cur.fetchone()
            #如果是random_flag为T则随机抽取一条记录并返回
        else:
            cur.execute("select * from %s" % self.__table_name)
            result = cur.fetchall()
        cur.close()
        conn.close()
        return result
    
    def delete(self, IP = ('1',1,'1','1','1'), delete_all=False):
        conn = sqlite3.connect(self.__database_name,isolation_level = None)
        if not delete_all:
            n = conn.execute("delete from %s where IP=?" % self.__table_name,
                        (IP[0],))
            #逗号不能省,元组元素只有一个的时候一定要加
            print("删除了",n.rowcount,"行记录")
        else:
            n = conn.execute("delete from %s" % self.__table_name)
            print("删除了全部记录,共",n.rowcount,"行")
        conn.close()

if __name__ == "__main__":
    conn = sqlite3.connect("IP.db",isolation_level = None)
    cur = conn.cursor()
    cur.execute("select count(1) from validation_ip_table ")

    print(cur.fetchall())

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值