python查询mysql坐标范围内_Python MySql查询cidr范围内的ip地址

好吧,我需要一个小肿块。我有一个mysql数据库,在数据库中,我有一个ip地址存储为inet_aton的表。我在表中有ip cidr范围。例如192.168.0.0/24或/8等等,我使用Python查询数据库,看看数据库中是否有一个/32ip地址。我正在尝试这样的代码:def ip_in_networks(ip, networks):

found_net_type = ''

found_template = ''

ip_as_int = unpack('!I', inet_aton(ip))[0]

for (network, netmask, net_type, template) in networks:

if (ip_as_int & netmask) == network:

# we are, awesome

found_net_type = net_type

found_template = template

break

def fetch_networks(r_conn):

'''This returns a list of networks as [[network, netmask], ...]'''

nets = []

r_cur = r_conn.cursor()

sql = 'SELECT n.network, n.netmask, l.lookup_value, l.template '

sql += 'FROM network n, lookup l '

sql += 'WHERE n.network_type_id = l.id'

r_cur.execute(sql)

for row in r_cur:

nets.append([row[0], row[1], row[2], row[3]])

return nets

if __name__ == '__main__':

''' some code removed'''

"connect to the db"

networks = fetch_networks(r_conn)

ip = sys.argv[1]

net_type, template = ip_in_networks(ip, networks)

if net_type:

'''If net_type which means found the ip address ini the db, do something, in this case

just log the found message''

我得到的错误是Unpack Non-sequence类型错误。在

我坚持使用标准的Python和Mysql库。在

我肯定少了一些简单的东西。如果需要的话,我也会完全更改代码。我有许多IP范围,只是把它们从这个IP地址到那个IP地址,然后看看IP是否在这个范围内。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值