InvalidRequestError: This session is in 'committed' state; no further SQL can be emitted within this

最新推荐文章于 2021-11-23 20:56:57 发布
最新推荐文章于 2021-11-23 20:56:57 发布 阅读量1.5k

Flask Sqlalchemy 事务报错:

InvalidRequestError: This session is in 'committed' state; no further SQL can be emitted within this

源代码如下:

class CompareInfo(db.Model, SearchableMixin):
    __tablename__ = "compareinfo"
    __searchable__ = ["fromtext", "totext", "create_at"]
    id = db.Column(db.Integer, primary_key=True)
    deleted = db.Column(db.String(2), default='00', nullable=False)
    created_at = db.Column(db.DateTime, default=sqlalchemy.func.now(), nullable=False)
    updated_at = db.Column(db.DateTime, default=sqlalchemy.func.now(), onupdate=sqlalchemy.func.now(),
                           nullable=False)

经排查发现,问题出在default=sqlalchemy.func.now(),将sqlalchemy.func.now()改为datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")问题得以解决。

class CompareInfo(db.Model, SearchableMixin):
    __tablename__ = "compareinfo"
    __searchable__ = ["fromtext", "totext", "create_at"]
    id = db.Column(db.Integer, primary_key=True)
    deleted = db.Column(db.String(2), default='00', nullable=False)
    create_at = db.Column(db.DateTime, default=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), nullable=False)
    update_at = db.Column(db.DateTime, default=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), nullable=False)
    fromtext = db.Column(db.TEXT, nullable=False)
    totext = db.Column(db.TEXT, nullable=False)
    result = db.Column(db.String(10), nullable=False)
                    InvalidRequestError: This session is in 'committed' state; no further SQL can be emitted within this
                    Flask Sqlalchemy 事务报错:InvalidRequestError: This session is in 'committed' state; no further SQL can be emitted within this源代码如下:class CompareInfo(db.Model, SearchableMixin):    __tablename__ = "...
				
InvalidRequestError: This session is in 'prepared' state; no further SQL can be emitted within this transaction. 在python2.7及python3下,在Flask下使用sqlalchemy session出现以上错误,以下是错误的代码: engine = create_engine( db.MysqlURI, echo=True, pool_size=200, https://www.jianshu.com/p/c0a8275cce99 Can’t reconnect until invalid transaction is rolled back 查询完以后没有将session放回连接池里,在开发过程中一定加入session.commit() / session.rollback() / session.close(),将当前会话完结。 This session is in ‘prepared‘ state; no
之前项目中遇到有关配置ssh互信免密登录问题,为避免以后踩坑,现记录一下避坑指南。 1、提示如下错误: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 问题分析:可能是ssh配置问题。 查看日志/var/log/secure,分析问题在何处;也可以检查/var/log/messages tail -n 20 /var/log/secure 问题处理:修改ssh配置 这里简单总结几个必须要修改的配置: HostKey /etc/ssh/s
# count distinct project by project.name # using a subquery db.session.query(sqlalchemy.func.count(distinct(Project.name))).scalar() # usi... 2、报错原因: python加载模块时,会搜索当前目录、已安装的内置模块、第三方模块,搜索的路径放在sys模块的path变量中,找不到就会报错:ImportError: No module named ‘XXX’ import sys print(sys.path) ['D:\\JetBrains\\PyCharm Community Edition 2017.3\\helper...
一、现象描述 如下从bootstrap示例登录页面参考的原生html代码,由于没有name属性导致表单数据没有提交: <form class="form-signin" method="POST" action="/login/"> <!--<img class="mb-4" src="{{ url_for('static', filename = 'img/...
class Base: id = db.Column(db.Integer, primary_key=True) deleted = db.Column(db.String(2), default='00', nullable=False) created_at = db.Column(db.DateTime, default=sqlalchemy.func.now(), ...
1、filter_by filter_by用于简单的查询列名,不支持比较运算符 User.query.filter_by(username='wanwei', id = 5).first() 2、filter 比filter_by强大,支持比较运算符==、>、<等,or、in等语法 User.query.filter(User.username=='wanwei',User.emai...
id = db.Column(db.Integer, primary_key=True) created_at = db.Column(db.DateTime, default=sqlalchemy.func.now(), nullable=False)
class SerializrableMixin(object): """A SQLAlchemy mixin class that can serialize itself as a JSON object""" def to_dict(self): """Return dict representation of class by iterating over...
### 回答1: 根据提供的提示信息"on branch master no commits yet changes to be committed: (use \"git rm --cach",可以推断出这是在使用Git进行版本控制时,所遇到的一种情况。 这个信息告诉我们当前所在的分支是"master",并且还没有进行任何提交(commit),但存在一些待提交的更改。更具体地说,这些更改被标记为"changes to be committed",并且建议我们使用命令"git rm --cached"来将它们从Git索引(index)中移除。 根据这个提示,我们可以采取以下步骤来处理这些更改: 1. 首先,打开命令行终端,切换到相应项目所在的目录。 2. 确保我们当前处于"master"分支下,可以使用以下命令进行确认: git branch 3. 确定要针对的具体更改,可以使用以下命令查看与之相关的更改: git status 4. 执行以下命令将这些更改从Git索引中移除: git rm --cached <文件路径> 其中,<文件路径>是待移除的文件相对于项目目录的路径。 5. 最后,通过执行以下命令将这些更改提交到版本控制系统: git commit -m "Remove changes from index" 通过以上步骤,我们就可以将待提交的更改从Git索引中移除,并将其作为一个新的提交记录到版本控制系统中。 希望这个回答能够帮助您理解如何处理这个特定的Git提示信息。 ### 回答2: 这是一个关于Git命令的提示信息。"on branch master"表示当前所在的分支是主分支(master branch),"no commits yet"表示尚未有任何提交记录,"changes to be committed"表示有文件修改等待被提交。而"(use \"git rm --cach"这部分信息则是一个未完整的命令示例,可能是由于显示区域限制无法完全显示出来。从命令的起始部分可以看出,它是用来取消追踪已经被Git管理的文件的,具体的命令应该是"git rm --cached <file>"(<file>代表要取消追踪的文件名),这样就可以将该文件从Git的跟踪列表中移除,但保留在本地文件系统中。英文提示信息有误,应将"cach"更正为"cached"。使用这个命令可以适用于不希望被版本控制的文件,可以根据需要将它们从Git的管理范围中排除,例如一些配置文件或者生成的临时文件等。总之,这个信息提示了当前所在分支以及有待提交的文件修改,并提供了一个示例命令以供参考。 ### 回答3: 这段话是git的一个命令提示,意味着在当前的主分支(master)上没有提交(commit)的更改(changes),但有要提交的更改(changed to be committed)。后面的命令提示是给出一个示例,建议使用"git rm --cached"命令来移除缓存中的文件。 在使用git进行版本控制时,所有的更改都需要经过三个阶段:工作目录、暂存区和版本库。当你对文件进行了更改之后,这些更改首先会体现在工作目录中。然后,你可以使用"git add"命令将更改添加到暂存区(stage),这相当于将更改保存在一个缓存区中,准备提交到版本库。最后,使用"git commit"命令将暂存区中的更改提交到版本库中。 根据这段话所示,"on branch master no commits yet changes to be committed: (use \"git rm --cached\")"意味着当前的主分支上没有任何提交,但是存在已经准备好要提交的更改。这些更改可能已经通过"git add"命令添加到暂存区。 后面的命令提示"git rm --cached"是在告诉我们如何处理这些准备提交的更改。"git rm"命令可以用于移除文件,"--cached"选项表示只从暂存区中移除文件,而不会删除工作目录中的文件。因此,这个命令提示建议我们使用"git rm --cached"命令来移除暂存区中的文件。 总结起来,这段话的意思是在当前的主分支上没有任何提交,但有一些准备提交的更改,我们可以使用"git rm --cached"命令来移除暂存区中的文件。