python模块调用的问题
ringa_lee
ringa_lee 2017-04-17 17:41:06
[Python讨论组]

我在b.py想调用a.py中的getColumn(),但是提示 Cursor closed;请问该怎么解决,如果我只写了a.getColumn(),a.py中的其他语句会被执行吗

b.py

import a
a.getColumn()
a.py
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='adminimda',db='db0')
cur = conn.cursor()
            
def getColumn(column,table):
    r=cur.execute("SELECT %s FROM %s"%(column,table))
    print (r)

cur.close()
conn.close()
ringa_lee
ringa_lee

ringa_lee

全部回复(3)
伊谢尔伦

a.py:

import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='adminimda',db='db0')
cur = conn.cursor()
            
def getColumn(column,table):
    r=cur.execute("SELECT %s FROM %s"%(column,table))
    print (r)

if __name__ == '__main__':
    cur.close()
    conn.close()

原因是导入a.py时, cur.close() conn.close()被执行过一次。

或者你把 cur.close() conn.close() 放到getColumn函数内。

python中 __name__及__main()__的妙处 http://www.cnblogs.com/liqilei/archive/2010/08/11/1797715.html

巴扎黑

在import a时,a中的代码(除了getColumn函数)已经执行过一编,所以cursor已经关闭,之后再调用getColumn函数,会抛出cur.close()执行过的结果。

高洛峰

你可以选择在b中手动调用close

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号