gpt4 book ai didi

python - 在数据库中存储 cookielib cookie

转载 作者:太空狗 更新时间:2023-10-30 01:49:42 26 4
gpt4 key购买 nike

在 Python 2.6 中使用 urllib2 模块时,我使用 cookielib 模块来处理 HTTP cookie,其方式类似于以下代码段:

import cookielib, urllib2
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://example.com/")

我想将 cookie 存储在数据库中。我不知道什么更好 - 序列化 CookieJar 对象并存储它或从 CookieJar 中提取 cookie 并存储它。我不知道哪个更好或如何实现它们中的任何一个。我还应该能够重新创建 CookieJar 对象。

有人可以帮我解决以上问题吗?

提前致谢。

最佳答案

cookielib.Cookie ,引用其文档字符串(在其 sources 中),

is deliberately a very simple class. It just holds attributes.

所以 pickle (或其他序列化方法)非常适合保存和恢复每个 Cookie实例。

至于CookieJar , set_cookie设置/添加一个 cookie 实例,__iter__ (要使用后者,只需在 jar 实例上执行 for 循环)返回它持有的所有 cookie 实例,一个接一个。

可用于查看如何制作“数据库上的 cookie jar”的子类是 BSDDBCookieJar (mechanize 的一部分,但我只是专门指出了 jar 源代码文件)——它不会将所有 cookie 加载到内存中,而是将它们保存在 self._db 中。这是一个 bsddb 实例(大部分在磁盘上,类似字典的哈希表仅限于将字符串作为键和值)并使用 pickle 进行序列化。

如果您同意在操作期间将每个 cookie 保存在内存中,只需 pickle处理 jar 是最简单的(当然,将 blob 放入数据库并在重新启动时从那里取回它)-- s = cPickle.dumps(myJar, -1)为整个 jar 提供一个大字节字符串(及其策略,当然,不仅仅是 cookie),并且 theJar = cPickle.loads(s)重新加载后重建它 s作为来自数据库的 blob。

关于python - 在数据库中存储 cookielib cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3028923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com