Skip to main content
 首页 » 编程设计

Python IRC bot + SQLAlchemy之多 channel 跟踪用户

2025年05月04日11yyy_WW

我目前将 IRC 用户存储在字典中,使用他们的昵称作为“键”以便于检索。用户是从 SQLAlchemy 中检索的,因此 users['deepy'] 是一个 SQLAlchemy 对象,我会定期将其与我的数据库同步。

现在我遇到的问题是,在 IRC 上,人们可以在多个 channel 中,而我只关注其中一个 channel 。我需要有关如何改进它的建议。

我一直在考虑做几乎相同的事情,但也将 channel 的用户(作为列表)存储在以 channel 名称为键的字典中,例如:

{ '#two': ['reference to user9', 'reference to user62'], '#one': ['reference to user1', 'reference to user2'] }

对包含 SQLAlchemy 对象的用户字典的引用。

这是明智的做法吗?

我正在使用 Python 2.7,PostgreSQL , SQLAlchemy和 Twisted 的 irc.ircclient。

请您参考如下方法:

我发现最好存储尽可能少的 SQLALchemy 对象。存储大量 SQLAlchemy 对象导致不得不担心同步问题并耗尽内存。

我会跟踪用户名或用户 ID 而不是实际的用户对象:

{ '#two': ['bob1', 'tom2'], '#one': ['bob1', 'mary1'] } 

然后,每当我需要用户的信息时,我都会从数据库中获取它们。如果我只有几个用户并且需要经常访问他们,那么我会创建一个将用户名映射到 SQLAlchemy 用户对象的字典。