python – Psycopg2 – AttributeError:’NoneType’对象没有属
发布时间:2020-12-20 11:45:42 所属栏目:Python 来源:网络整理
导读:我有一个 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'
我有一个
Python脚本来列出使用psycopg2的PostgreSQL模式.
#!/usr/bin/env python import yaml import psycopg2 def load_config(file_name): with open(file_name,'r') as stream: config = yaml.load(stream) return config config = 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.schemata WHERE 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 = None Traceback (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() –
但是,有一点可以肯定,cursor.execute()永远不会返回结果集. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |