IP地址如何在数据库里面的存储

比较传统存储IP地址的方法是采用varchar(15),但是这种方法需要占用15个字节空间,那么有没有更加节省空间的做法么?答案就是用int存储。采用int存储有2种处理方式。
方法一、利用数据库函数进行处理。以mysql为例可以采用INET_ATON,INET_NTOA函数进行转换。

# INET_NTOA函数将ip地址转换int类型。
mysql> SELECT INET_ATON('192.168.0.1');
+--------------------------+
| INET_ATON('192.168.0.1') |
+--------------------------+
|               3232235521 |
+--------------------------+
1 row in set (0.00 sec)

#INET_ATON函数将int类型转换为ip地址
mysql> SELECT INET_NTOA(3232235521);  
+-----------------------+
| INET_NTOA(3232235521) |
+-----------------------+
| 192.168.0.1           |
+-----------------------+
1 row in set (0.00 sec)

方法二、利用开发语言的函数进行处理,以python进行举例。可以采用socket,struct依赖进行转换

#引入依赖
>>> import socket
>>> import struct
>>> int_ip = 123456789
#int类型转ip地址
>>> ip = socket.inet_ntoa(struct.pack('I',socket.htonl(int_ip)))
'7.91.205.21'
##ip地址转int类型
>>> socket.ntohl(struct.unpack("I",socket.inet_aton(str(ip)))[0])
123456789

你可能感兴趣的:(python,数据库)