我在SQLAlchemy中有一个表,其列为IPaddress,以十进制格式表示。 如何更改它以显示虚线格式?
答案 0 :(得分:1)
从DB获取十进制值并在Python代码中进行转换。安装IPy
模块并执行以下操作:
from IPy import IP
ip_dotted = str(IP(ip_dec))
如果你使用的是Python 3.3,stdlib中有ipaddress
:
from ipaddress import ip_address
ip_dotted = str(ip_address(ip_dec))
如果使用的RDBMS是PostgreSQL,则可以在DB级别进行转换:
from sqlalchemy.sql import cast, func
from sqlalchemy.dialects.postgresql import INET
session.query(func.host(cast('0.0.0.0', INET) + SomeTable.ip_dec)).scalar()
最后,您可以自己进行计算,因此不会对特定库,Python版本或RDBMS有任何依赖性:
segments = []
# From 3 to 0.
for n in range(3, -1, -1):
p = 256 ** n
segments.append(str(ip_dec // p))
ip_dec %= p
ip_dotted = '.'.join(segments)