相关疑难解决方法(0)

实际上,Python 3.3中新的"yield from"语法的主要用途是什么?

我很难将我的大脑包裹在PEP 380周围.

  1. "收益率"有用的情况是什么?
  2. 什么是经典用例?
  3. 为什么它与微线程相比?

[更新]

现在我明白了我的困难的原因.我使用过发电机,但从未真正使用过协程(由PEP-342引入).尽管有一些相似之处,但生成器和协同程序基本上是两个不同的概念.理解协同程序(不仅仅是生成器)是理解新语法的关键.

恕我直言协程是最晦涩的Python功能,大多数书籍使它看起来毫无用处和无趣.

感谢您的回答,但特别感谢agf和他与David Beazley演讲相关的评论.大卫摇滚.

python yield

349
推荐指数
7
解决办法
9万
查看次数

使用MySQLdb从Python中获取MySQL存储过程的返回值

我在MySQL数据库中有一个存储过程,它只是更新日期列并返回上一个日期.如果我从MySQL客户端调用这个存储过程,它工作正常,但是当我尝试使用MySQLdb从Python调用存储过程时,我似乎无法让它给我返回值.

这是存储过程的代码:

CREATE PROCEDURE test_stuff.get_lastpoll()
BEGIN
    DECLARE POLLTIME TIMESTAMP DEFAULT NULL;
    START TRANSACTION;

    SELECT poll_date_time
      FROM test_stuff.poll_table
      LIMIT 1 
      INTO POLLTIME
    FOR UPDATE;

    IF POLLTIME IS NULL THEN
        INSERT INTO 
               test_stuff.poll_table 
               (poll_date_time)
        VALUES 
               ( UTC_TIMESTAMP() );

        COMMIT;
        SELECT NULL as POLL_DATE_TIME;
    ELSE
        UPDATE test_stuff.poll_table SET poll_date_time = UTC_TIMESTAMP();
        COMMIT;
        SELECT DATE_FORMAT(POLLTIME, '%Y-%m-%d %H:%i:%s') as POLL_DATE_TIME;
    END IF;
END
Run Code Online (Sandbox Code Playgroud)

我用来尝试调用存储过程的代码与此类似:

#!/usr/bin/python

import sys
import MySQLdb

try:
    mysql = MySQLdb.connect(user=User,passwd=Passwd,db="test_stuff")
    mysql_cursor = mysql.cursor()

    results=mysql_cursor.callproc( "get_lastpoll", () )
    print results

    mysql_cursor.close()
    mysql.close()

except …
Run Code Online (Sandbox Code Playgroud)

python mysql

7
推荐指数
3
解决办法
3万
查看次数

标签 统计

python ×2

mysql ×1

yield ×1