Python IRC bot + SQLAlchemy - 多渠道跟踪用户

Posted

技术标签:

【中文标题】Python IRC bot + SQLAlchemy - 多渠道跟踪用户【英文标题】:Python IRC bot + SQLAlchemy - track users in multiple channels 【发布时间】:2012-10-19 12:19:47 【问题描述】:

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

现在我遇到的问题是,在 IRC 上,人们可以在许多频道中,而我只是在跟踪一个。我需要关于如何改进这一点的建议。

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

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

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

这是一个明智的做法吗?

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

以上是关于Python IRC bot + SQLAlchemy - 多渠道跟踪用户的主要内容,如果未能解决你的问题,请参考以下文章

Python IRC bot + SQLAlchemy - 多渠道跟踪用户

IRC Python Bot:最佳方式 [关闭]

Python IRC-Bot Quakenet No Ident Response [关闭]

Python3 webserver 在 IRC bot 的线程之间进行通信

如何使用 Python Twitch IRC Bot 获取聊天消息参数?

Twisted irc python bot - 缓冲消息