Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MySQL中为CherryPy 3.2.2存储web会话?_Mysql_Session_Cherrypy - Fatal编程技术网

如何在MySQL中为CherryPy 3.2.2存储web会话?

如何在MySQL中为CherryPy 3.2.2存储web会话?,mysql,session,cherrypy,Mysql,Session,Cherrypy,我找到了许多CherryPy旧版本的示例,但它们都引用了CherryPy 3.2.2中没有的导入模块,我发现了一个参考,即有内置的存储类型功能(ram、文件、postgresql中的一种)。首先,你可以看一下 这家伙是如何编写自己的会话类并覆盖某些方法的。他是为redis而不是MySQL做的。您可以为MySQL编写方法。cherrypy中“cherrpy/lib/sessions.py”中已经存在一个非常类似的类: 这和你想要的非常相似。我想说的是,采用“3kwa”中的实现方法,但不是他的Re

我找到了许多CherryPy旧版本的示例,但它们都引用了CherryPy 3.2.2中没有的导入模块,我发现了一个参考,即有内置的存储类型功能(ram、文件、postgresql中的一种)。

首先,你可以看一下

这家伙是如何编写自己的会话类并覆盖某些方法的。他是为redis而不是MySQL做的。您可以为MySQL编写方法。cherrypy中“cherrpy/lib/sessions.py”中已经存在一个非常类似的类:

这和你想要的非常相似。我想说的是,采用“3kwa”中的实现方法,但不是他的RedisSession类,而是从“cherrpy/lib/sessions.py”中复制PostgresqlSession类,并修改以匹配正确的MySQL语法

一个可能的路径可以是:

从上面的链接下载“cherrys.py”,并重命名为“mysqlsession.py”。用“cherrpy/lib/sessions.py”中的“PostgresqlSession(Session)”覆盖“redissession(Session)”,并重命名为“MySQLSession(Session)”。一定要加上

locks = {}

def acquire_lock(self):
    """Acquire an exclusive lock on the currently-loaded session data."""
    self.locked = True
    self.locks.setdefault(self.id, threading.RLock()).acquire()

def release_lock(self):
    """Release the lock on the currently-loaded session data."""
    self.locks[self.id].release()
    self.locked = False
添加到新的“MySQLSession”-类(就像在redisession(Session)中完成的那样)。更改PostgreSQL语法以匹配MySQL语法(这应该不难)。将“MySQLSession.py”放在项目目录下的某个位置,并使用

import mysqlsession
和使用

cherrypy.lib.sessions.MySQLSession = mysqlsession.MySQLSession
在应用程序的初始化中。在配置中

tools.sessions.storage_type : 'mysql'
以及与类“PostgreSQL”类似的参数(如主机、端口等)


我可能一直都是错的。但这就是我试图解决这个问题的方法。

首先,你可以看看

这家伙是如何编写自己的会话类并覆盖某些方法的。他是为redis而不是MySQL编写的。你可以为MySQL编写方法。cherrypy中的“cherrpy/lib/sessions.py”中已经存在一个非常类似的类:

这与您想要的非常相似。我想说,采用“3kwa”中的实现方法,但不是他的RedisSession类,而是从“cherrpy/lib/sessions.py”中复制PostgresqlSession类,并修改以匹配正确的MySQL语法

一个可能的路径可以是:

从上面的链接下载“cherrys.py”并重命名为“mysqlsession.py”。从“cherrpy/lib/sessions.py”用“PostgresqlSession(Session)”覆盖“redissession(Session)”,并重命名为“mysqlsession(Session)”。确保添加

locks = {}

def acquire_lock(self):
    """Acquire an exclusive lock on the currently-loaded session data."""
    self.locked = True
    self.locks.setdefault(self.id, threading.RLock()).acquire()

def release_lock(self):
    """Release the lock on the currently-loaded session data."""
    self.locks[self.id].release()
    self.locked = False
添加到新的“MySQLSession”-类(就像在redisession(Session)中完成的那样)。更改PostgreSQL语法以匹配MySQL语法(这应该不难)。将“MySQLSession.py”放在项目目录下的某个位置,并使用

import mysqlsession
和使用

cherrypy.lib.sessions.MySQLSession = mysqlsession.MySQLSession
在应用程序的初始化中。在配置中

tools.sessions.storage_type : 'mysql'
以及与类“PostgreSQL”类似的参数(如主机、端口等)

我可能一直都是错的,但这就是我试图解决这个问题的方法