Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.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
Python数据库会话(meta.Session)_Python_Session_Sqlalchemy_Pylons - Fatal编程技术网

Python数据库会话(meta.Session)

Python数据库会话(meta.Session),python,session,sqlalchemy,pylons,Python,Session,Sqlalchemy,Pylons,我有大量的代码在编辑数据库,但我想做的是加载所有需要编辑或添加到会话中的数据,返回一个网页,一旦用户查看了数据,然后提交到数据库。大概是这样的: def index(self): empsTbl = meta.Session.query(model.Person).all(); newEmp = model.Person() newEmp.userid = row[0].strip() meta.Session.add(newEmp) return ren

我有大量的代码在编辑数据库,但我想做的是加载所有需要编辑或添加到会话中的数据,返回一个网页,一旦用户查看了数据,然后提交到数据库。大概是这样的:

def index(self):
    empsTbl = meta.Session.query(model.Person).all();
    newEmp = model.Person()
    newEmp.userid = row[0].strip()
    meta.Session.add(newEmp)
    return render("/update.html")

def commitSession(self):
    meta.Session.commit()
如果我尝试按网页按钮调用CommissionSessiondef,则会话似乎为空。我在模型上尝试了一些东西,例如:

Session.configure(autoflush=False, autocommit = False, bind=engine)
我还换了basecontroller。我删除了代码:

meta.Session.remove()
这样它就不会在每次调用后删除会话

我还尝试了使用合并,以查看是否会将会话存储在持久数据库会话中:

meta.Session.merge(newEmp)
但我似乎还是无法让它发挥作用

编辑:


如果有人能就如何最好地处理Python会话提供建议,那将非常有帮助

我希望不是这样,但似乎您还不了解web应用程序的生命周期。 在你的例子中,你有两个生命周期,因为你有两个动作。2请求/响应场景。你必须明白,你在一个动作中所做的一切(大部分)都会留在那里。 操作“index”的数据库会话与“commitSession”中的会话相同,因此,“commitSession”中的会话为空。为什么?因为您刚刚提交了一个新创建的会话

您需要做的是为您和您的事业找到一种工作方式,将信息从行动“索引”传输到行动“委员会”。最常用的方法是序列化信息,将其放入websession,在“Commission”操作中反序列化,将其写入数据库,并在websession中使信息无效。
或者,您将“索引”中的所有信息放在一些隐藏字段中,然后根据“佣金”再次发布这些信息。

最好将您的交易限制在不占用大量时间的非常具体的操作中。请编辑您的问题,以描述事务的逻辑和编程范围,即在获得会话和提交之间发生了什么?这是我需要知道的。我认为我可能必须对会话进行pickle处理,但我不确定是否可以在整个事务中保持现有会话。