0

SQLAlchemy に、列 IPaddress を持つテーブルがあり、これは 10 進数形式で表されます。代わりにドット形式を表示するように変更するにはどうすればよいですか?

4

1 に答える 1

1

DB から 10 進数値を取得し、Python コードで変換を行います。IPyモジュールをインストールし、次の手順を実行します。

from IPy import IP
ip_dotted = str(IP(ip_dec))

Python 3.3 を使用していた場合はipaddress、stdlib にあります。

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)
于 2013-08-16T13:17:57.010 に答える