我对这件事已经束手无策了。在
所以我创建了一个脚本,从操作系统捕获数据,并将其插入字典中。下一步应该是将这些数据插入postgres数据库。但是,当执行for循环遍历数据时,我得到了以下错误。在
/usr/bin/python2.7 /home/gmastrokostas/PycharmProjects/learning/Violent_Python.py Traceback (most recent call last): File "/home/gmastrokostas/PycharmProjects/learning/Violent_Python.py", line 52, in for db_loop in eval(server_info): TypeError: eval() arg 1 must be a string or code object
下面是postgres表脚本和python脚本。表的名称是SERVERS,列是“hostname”、“OS”、“RAM”、“CPU”。在
创建表的SQL脚本-PostgreSQL 9.4
CREATE TABLE servers
(
hostname character varying(50),
"OS" character varying(25),
"RAM" numeric(4,2),
"CPU" character varying(50)
)
WITH (
OIDS=FALSE
);
ALTER TABLE servers
OWNER TO dbuser;
PYTHON脚本
^{pr2}$
问题是您正在尝试
eval
一个字典。eval函数编译代码-即字符串。我不知道你在那里用eval是什么意思。在好消息是不需要调用eval。更好的消息是我觉得你根本不需要循环。在
您已经构造了一个要插入的命名数据字典。{{cd2>你需要做的就是插入一个连接。在
是代码中的多个错误。首先要插入一行数据(
server_info
),这样就不需要循环了。另外,对eval()
的调用也没有任何意义,因为该函数用于计算字符串中的Python代码,而您将字典作为参数传递给它。在然后,您不应该自己引用SQL参数(例如,使用})。在
"%s"
而不是{最后,假设您已经在字典中拥有数据,使用它来为
execute()
方法提供绑定变量。在我将编写如下代码:
相关问题 更多 >
编程相关推荐