我有一个突然不再工作的脚本。我同时升级了 sqlalchemy 和 pg8000,只进行了小幅升级,所以我不完全确定哪一个是罪魁祸首。
我有一个对外部 Postgres 数据库的查询,并将结果集重新插入到同样是 Postgres 的 Heroku 数据库中。我可以连接到外部数据库并对其进行查询,但是 Python 在尝试按字段名称访问特定字段时返回错误。但是,我可以按位置访问字段:
for row in db.query(DATABASE_QUERY):
print(type(row))
# <class 'records.Record'>
print(row)
# <Record {"item_id": 12345, "item_name": "7.Subject.Class", "active": true, "is_deleted": false}
print(row[0])
# 12345
print(row.item_name) # print(row['item_name'])
# Error thrown
使用任一语法在最后一行引发错误。完整的堆栈跟踪是:
Traceback (most recent call last):
File "app_dir/manage.py", line 14, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\user\Documents\Github\django-app\venv-dev\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
utility.execute()
File "C:\Users\user\Documents\Github\django-app\venv-dev\lib\site-packages\django\core\management\__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\user\Documents\Github\django-app\venv-dev\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\user\Documents\Github\django-app\venv-dev\lib\site-packages\django\core\management\base.py", line 364, in execute
output = self.handle(*args, **options)
File "C:\Users\user\Documents\Github\django-app\app_dir\apps\etl\management\commands\load.py", line 118, in handle
step.load(period=period)
File "C:\Users\user\Documents\Github\django-app\app_dir\apps\etl\models\job.py", line 89, in load
match_status = self.domain_source.load(*args, **kwargs)
File "C:\Users\user\Documents\Github\django-app\app_dir\apps\etl\models\domain.py", line 90, in load
return self.load_profile.load(period=period, data=data, **kwargs)
File "C:\Users\user\Documents\Github\django-app\app_dir\apps\etl\models\load_source.py", line 107, in load
print(row.item_name)
File "C:\Users\user\Documents\Github\django-app\venv-dev\lib\site-packages\records.py", line 61, in __getattr__
return self[key]
File "C:\Users\user\Documents\Github\django-app\venv-dev\lib\site-packages\records.py", line 54, in __getitem__
i = self.keys().index(key)
AttributeError: 'RMKeyView' object has no attribute 'index'
如何按字段名称访问行的数据?或者是否有可靠的方法来访问该行的字段?