python – Psycopg2 – AttributeError:’NoneType’对象没有属性’fetchall’

python – Psycopg2 – AttributeError:’NoneType’对象没有属性’fetchall’,第1张

概述我有一个 Python脚本来列出使用psycopg2的PostgreSQL模式. #!/usr/bin/env pythonimport yamlimport psycopg2def load_config(file_name): with open(file_name, 'r') as stream: config = yaml.load(stream) 我有一个 Python脚本来列出使用psycopg2的Postgresql模式.

#!/usr/bin/env pythonimport yamlimport psycopg2def load_config(file_name):    with open(file_name,'r') as stream:        config = yaml.load(stream)    return configconfig = load_config('config.yml')['database']conn = psycopg2.connect(host=config['host'],port=config['port'],dbname=config['name'],user=config['user'],password=config['password'])cursor = conn.cursor()print('conn = %s' % conn)print('cursor = %s' % cursor)sql_List_schemas = """SELECT *FROM information_schema.schemataWHERE schema_name <> 'information_schema'  AND schema_name !~ E'^pg_';"""List_schemas = cursor.execute(sql_List_schemas)print('List_schemas = %s' % List_schemas)print('List_schemas.fetchall() = %s' % List_schemas.fetchall())

当我运行脚本时,我得到了:

conn = <connection object at 0x7f0e12eef050; dsn: 'user=test password=xxxxxxxxxxxxx host=127.0.0.1 port=5432 dbname=test',closed: 0>cursor = <cursor object at 0x7f0e1326c148; closed: 0>List_schemas = NoneTraceback (most recent call last):  file "./postgres_db_schema.py",line 26,in <module>    print('List_schemas.fetchall() = %s' % List_schemas.fetchall())AttributeError: 'nonetype' object has no attribute 'fetchall'

我认为SQL查询没问题.当我使用另一个Postgresql客户端执行查询时,它返回了一些行.为什么cursor.execute返回None?我的剧本有什么问题吗?

解决方法 .execute()只执行查询而不返回任何内容.取决于你如何获取结果(例如:iterator,fetchall(),fetchone()等).

>>> cursor.execute(sql_List_schemas)>>> List_schemas = cursor.fetchall()

同样的,

>>> cursor.execute(sql_List_schemas)>>> first_row = cursor.fetchone()>>> second_row = cursor.fetchone()>>> remaining_rows = cursor.fetchall()

PEP-2049声明没有为.execute()方法定义返回值,因此数据库连接器可能返回与None不同的值. (例如:一个布尔标志,指示sql命令是否已成功执行)

但是,有一点可以肯定,cursor.execute()永远不会返回结果集.

总结

以上是内存溢出为你收集整理的python – Psycopg2 – AttributeError:’NoneType’对象没有属性’fetchall’全部内容,希望文章能够帮你解决python – Psycopg2 – AttributeError:’NoneType’对象没有属性’fetchall’所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193467.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存