如何从php执行python文件来更新mysql表?

2024-09-30 08:16:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着点击一个按钮,运行一个python文件来执行naivebayes并将值更新到Mysql表。我的代码如下:

控制器.php

public function execute_excel()
{
    shell_exec('python D:\laravel-crud\public\admin\mysqlku.py');
    return redirect()->back();
}

mysqlku.py文件

*some codes*
# update the database with new values
logging.basicConfig(level=logging.DEBUG)
for key,row in values.iterrows():
    up = conn.execute("UPDATE mahasiswa SET daftar_kembali = '{}' WHERE id_mahasiswa = {}"
                       .format(row['daftar_kembali'], row['id_mahasiswa']))
    logging.debug(up)

当我直接用Spyder/Terminal运行mysqlku.py时,我可以很好地更新mysql表,但是在Controller.php中无法这样做。你知道吗

有人知道如何使用shell_exec()?你知道吗

ResultProxy调试不会显示在Spyder中,但会显示在Terminal中。你知道吗

DEBUG:root:<sqlalchemy.engine.result.ResultProxy object at 0x000001DE4671C5C0>
DEBUG:root:<sqlalchemy.engine.result.ResultProxy object at 0x000001DE4671C668>
DEBUG:root:<sqlalchemy.engine.result.ResultProxy object at 0x000001DE4671C5F8>
etc.

Tags: 文件pydebugobjectsqlalchemyloggingrootresult
1条回答
网友
1楼 · 发布于 2024-09-30 08:16:56

您需要与ResultProxy交互。根据SQLAlchemy的documentation

返回的结果是ResultProxy的一个实例,它引用了一个DBAPI游标,并提供了一个与DBAPI游标基本兼容的接口。当DBAPI游标的所有结果行(如果有的话)都用完时,它将被ResultProxy关闭。不返回任何行的ResultProxy,例如UPDATE语句(不返回任何行),在构造时立即释放游标资源。你知道吗

试试这个:

logging.debug(up.fetchall())

参考站点:https://code-maven.com/slides/python-programming/sqlalchemy-engine-select

相关问题 更多 >

    热门问题