Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.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 sqlalchemy更新没有';行不通_Python_Sqlalchemy - Fatal编程技术网

Python sqlalchemy更新没有';行不通

Python sqlalchemy更新没有';行不通,python,sqlalchemy,Python,Sqlalchemy,我使用sqlalchemy执行一些查询和更新,但现在我在更新操作方面遇到了问题,当我更改模型属性pet_time(ins.role_time=plus_days(ins.role_time,30))并使用session提交时,sqlalchemy没有执行更新操作。我不知道发生了什么,有人能帮忙吗 Base = declarative_base() class User(Base): __tablename__ = 'user' id = Column(Integer,prima

我使用sqlalchemy执行一些查询和更新,但现在我在更新操作方面遇到了问题,当我更改模型属性pet_time(
ins.role_time=plus_days(ins.role_time,30)
)并使用session提交时,sqlalchemy没有执行更新操作。我不知道发生了什么,有人能帮忙吗

Base = declarative_base()

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer,primary_key=True)
    nick_name = Column(String)
    create_time = Column(DateTime, default=datetime.datetime.now)
    role_time = Column(DateTime)


# the db connection info is correct
def getDbSession():
    return Session()

def queryUserById(id):
    sess = getDbSession()
    instance = sess.query(User)\
                .filter(User.id == id)\
                .limit(1).first()
    return instance

def increaseRoleTime(id,inc=1):
    ins = queryUserById(id)
    sess = getDbSession()
    if(ins.role_time is None):
        ins.role_time = datetime.datetime.now()
    inc = inc * 30
    # ins.role_time = func.ADDDATE(ins.role_time,inc)
    ins.role_time = plus_days(ins.role_time,inc)
    sess.commit()
    return 1

# import timedelta from datetime to plus days
def plus_days(mydatetime,days):
    return mydatetime + timedelta(days=days)

在函数
increaseRoleTime
中,我更改了属性role\u time和commit,但仍然不起作用。

什么是
会话
?你确定你没有在
queryUserById
increaseRoleTime
中创建两个单独的会话吗?你应该创建一个
会话
对象并使用它:作为参数传递给函数等。为什么在
increaseRoleTime
中返回
1
?还有
。限制(1)。首先()
没有任何意义,只需使用
.first()
@univerio是的,我创建了两个单独的会话,当我更改为一个会话时,它就工作了!谢谢你们。你能告诉我为什么吗?会话如何在内部工作?