Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Mysql_Session_Sqlalchemy - Fatal编程技术网

Python 调用存储过程后的SQLAlchemy查询

Python 调用存储过程后的SQLAlchemy查询,python,mysql,session,sqlalchemy,Python,Mysql,Session,Sqlalchemy,我有一个MySQL存储过程,它更新表中的一些行。调用该SP后,我需要查询抛出会话。查询。。。。但会话不会刷新。 我的连接是: db_setup='mysql+pymysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'。格式( os.environ.get(“用户名”), 操作系统环境获取(“密码”), 操作系统环境获取(“主机”), 操作系统环境获取(“端口”), os.environ.get(“数据库”) ) 引擎=创建引擎(db\U设置,echo=True) Se

我有一个MySQL存储过程,它更新表中的一些行。调用该SP后,我需要查询抛出会话。查询。。。。但会话不会刷新。 我的连接是:

db_setup='mysql+pymysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'。格式(
os.environ.get(“用户名”),
操作系统环境获取(“密码”),
操作系统环境获取(“主机”),
操作系统环境获取(“端口”),
os.environ.get(“数据库”)
)
引擎=创建引擎(db\U设置,echo=True)
Session=sessionmaker(bind=engine,expire\on\u commit=True,autoflush=False)
会话=会话()
Base=声明性_Base()
对SP的调用:

最后,我尝试执行query
session.query(Table).filter()
,结果没有更新,但在数据库中没有问题,然后我重新启动应用程序并更新信息。 另外,我尝试在执行SP后添加
session.expire\u all()
,但它不起作用


谢谢。

您很可能正在模块级创建会话,而实际上您应该在创建会话时进行查询。您好@univerio,我已经在全局范围内创建了sessionmaker,并在我需要的每个模块中使用该会话。您在整个应用程序的生命周期中创建了一个会话,而您应该在每次访问数据库时创建一个新会话。当然,这是基于您提供的代码,但由于您提供的代码不完整,我根据以下事实进行猜测:
Session
Session
是在同一级别创建的。
connection = engine.raw_connection()
try:
    cursor = connection.cursor()
    cursor.callproc('nameSP',[1])
    result = list(cursor.fetchall())
    cursor.close()
    connection.commit()
except Exception as e:
    raise InternalServerError(e)
finally:
    connection.close()