我在 SQLite 数据库中保存了大量网络信息。我想根据这些信息以网络图的形式绘制一个图表。
我希望它是交互式的,从某种意义上说,在最高级别上只能看到网络范围通信,当您深入图表时,您开始看到各个节点(交换机、路由器、防火墙、主机、服务器等)全部链接在一起。
我希望这个过程尽可能顺利,允许您使用滚轮在图表的某个位置进行放大,并且图表会随着您的操作而扩展。然后您可以在地图上单击并拖动。不过,我想先了解基础知识,因此认为我应该从在 HTML 中绘制图表开始,并为节点提供超链接,允许用户使用浏览器在图表中移动并深入了解图表。
同样重要的是,用户能够将他们的视图捕获为静态图像,我猜这在 HTML 中会更容易完成。
为了达到目的,我想问我可以从哪里开始这样做。我研究过 PyQT、Graphviz、输出到 HTML 等。我只是想决定使用什么以及一般如何去做这件事。我对 Python 相当擅长,但我愿意接受其他语言的建议。
如果你们认为 Python 可以做到这一点,那么哪个 Python 可以做到呢?2.7还是3?我一直在考虑升级到 3,现在合适吗?
提前致谢!
我有一个 for 循环,它创建一个新的“行”对象,在将对象提交到 Postgres 数据库中的表之前用数据填充属性。我插入的表(以及对象)采用 UUID 的主键,只有在第一次提交后所有新创建的行对象中的循环第一次迭代后,该值保持不变。
我对解决方案有点迷茫,但是我认为这可能与我处理数据库会话的方式有关。在撰写本文时,我还注意到我new_user在invite_users和invite_user函数中使用了相同的变量名 ( ) 。虽然 Python 会认为它们在不同的范围内(我认为),但我想知道 SQLALchemy 会话是否会?
请注意,我已经删除了很多我认为在问题上下文中是多余的代码 - 主要是更多的列等。此外,该invite_user功能在其他地方使用,因此invite_users仅用于批量“邀请”。
这是一个片段,显示了表类定义的开头和Column定义:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.dialects import postgresql
import uuid
Base = declarative_base()
class User(Base):
__tablename__ = "users"
id = Column(postgresql.UUID(as_uuid=True), default=uuid.uuid4(), primary_key=True)
email = Column(String, unique=True)
Run Code Online (Sandbox Code Playgroud)
这是我用来创建和销毁会话的函数:
from contextlib import contextmanager
from sqlalchemy import create_engine
@contextmanager
def db_session(db_url):
engine = create_engine(db_url, convert_unicode=True)
connection = engine.connect()
db_session = …Run Code Online (Sandbox Code Playgroud)