데이터베이스에서 값을 처리할 때 INT 형으로 되어있는 값들은 처리속도가 빠르다. IP, MAC, 문자열, DATETIME, PORT 등을 INT 형으로 바꿔 데이터베이스에 삽입할 수 있다. (단, 입력값은 모두 문자열이여야 함)
- IP to INT
1 2 3 4 5 6 7 8 | def ip2int(ip): try: #print("IP : %s Type : %s" % (ip, type(ip))) return struct.unpack("!I", socket.inet_aton(ip))[0] except: #print(traceback.print_exc()) #print(ip) return '' | cs |
IP |
2진수 → 16진수 |
INT |
127.0.0.1 |
0b01111111000000000000000000000001 \x7f\x00\x00\x01 |
2130706433 |
- MAC to INT
1 2 3 4 5 6 7 | def mac2int(mac): try: return int(mac.replace(':', ''), 16) except: #print(traceback.print_exc()) return '' | cs |
MAC | 변환을 위한 치환 | INT |
AA:BB:CC:DD:EE:FF | AABBCCDDEEFF | 187723572702975 |
- ACTION to INT
1 2 3 4 5 | def act2int(string): if '문자1' in string: return 1 elif '문자2' in string: return 0 | cs |
- 0 또는 1로 나타냄으로써 해당 문자열에 대해 숫자로 표현이 가능하다.
- DATETIME to INT
1 2 3 | def date2int(date): time = datetime.datetime.strptime(date, '%Y-%m-%d %H:%M:%S') return int(time.timestamp()) | cs |
DATETIME | 문자열 → DATETIME | INT |
2019-12-31 15:12:15 | datetime.datetime(2019, 12, 31, 15, 12, 15) | time.timestamp() : 1577772735 |
- PORT to INT
1 2 | def port2int(port): return int(port) | cs |
- PORT 자체는 '12345' 와 같이 들어온 문자 자체가 INT 형태이므로 특별한 처리 없이 바로 INT 형으로 변환했다.
'공부 > Python' 카테고리의 다른 글
python venv 설치방법 (0) | 2019.11.05 |
---|---|
[암호] Vigenere (0) | 2019.02.09 |
[전자서명]Python OpenSSL (0) | 2018.07.17 |