P粉5233350262023-08-25 11:31:10
호출 후 저장 프로시저의 결과 가져오기 cursor.callproc
는 다음 요소에 따라 달라집니다.
DBAPI Specification in 上有这样的说法光标.callproc
:
실제로 Cursor.callproc의 반환 값을 사용하는 것은 프로시저가 단일 행을 반환하고 열 수가 INOUT 및 OUT 매개 변수의 수와 일치하는 경우에만 작동하므로 결과 처리 방법에 몇 가지 변경 사항이 있습니다.
주요 MySQL Python 커넥터 패키지(MySQL 커넥터, mysqlclient(MySQLdb)< /a> 및 PyMySQL)가 이러한 상황을 처리하는 방법은 다음과 같습니다. < /p>
INOUT 또는 OUT 매개변수를 통해 반환된 단일 행 결과
MySQL Connector는 cursor.callproc
의 반환 값으로 입력 시퀀스의 수정된 복사본을 반환합니다. 값은 튜플입니다.
mysqlclient 및 PyMySQL에서는 데이터베이스에 출력 매개변수를 쿼리한 다음 커서를 통해 결과를 가져와야 합니다. 값은 튜플의 튜플입니다. 쿼리할 매개변수 이름은 '@_{procedure_name}_{params.index(param)}'
단일 결과 집합에 있는 하나 이상의 행, INOUT 또는 OUT 매개변수가 정의되지 않음
MySQL 커넥터를 통해 커서의 stored_results 메소드(cursor.stored_results
DBAPI 사양의 일부가 아님)
mysqlclient 및 PyMySQL은 커서의 fetch* 메소드를 통해 결과를 노출합니다
으으으으여러 결과 세트, INOUT 또는 OUT 매개변수가 정의되지 않음
MySQL 커넥터는 커서의 stored_results
메소드
mysqlclient 및 PyMySQL에서는 다음 결과 세트로 이동하려면 cursor.nextset을 호출해야 합니다. 프로시저를 호출한 결과인 빈 결과 집합이 추가로 반환될 수 있습니다(cursor.nextset
检索结果集而不是仅调用 <代码>cursor.fetchall가 한 번 전달된 경우).
버전 정보
으아아아P粉0054177482023-08-25 10:38:33
결과 세트 중 하나를 선택해 보셨나요?
으아악 stmt가 하나만 있어도 SELECT
여러 결과 세트를 할당할 수 있습니다. 나는 이것이 INOUT 및 OUT 변수가 반환되도록 허용하기 위해 PHP의 MySQLi 저장 프로시저에서 수행된다는 것을 알고 있습니다(다시 말하지만 그렇지 않지만 어쨌든 할당되고 있을 수 있습니다).
내가 사용하고 있는(실행 중인) 전체 코드는 다음과 같습니다.
으아악