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 - 多渠道跟踪用户
Python IRC-Bot Quakenet No Ident Response [关闭]
Python3 webserver 在 IRC bot 的线程之间进行通信