2012-04-25 130 views
0

正在编写一个Python脚本,它将文件从一个目录复制到另一个目录,并将该文件名复制到文档归档PostgreSQL表中。我收到下面的错误是:在名为光标在Python中命名游标上多次调用excute()

CAMT”呼叫EXCUTE()不止一次

下面是我的代码:

 cursor = conn.cursor('cur', cursor_factory=psycopg2.extras.DictCursor) 
    cursor.execute('SELECT * FROM doc_archive.table LIMIT 4821') 
     row_count = 0 
    for row in cursor: 
     row_count += 1 
     print "row: %s %s\r" % (row_count, row), 
     pathForListFiles = srcDir 
    files = os.listdir(pathForListFiles) 
    for file in files: 
     print file 
     try: 
      # Perform an insert with the docid 
      cursor.execute("INSERT INTO doc_archive.field_photo_vw VALUES) 

回答

1

这是实际的代码?你在第二次执行中有无与伦比的引号。

通过迭代结果的时候,我通常使用

for var in range(int(cursor.rowcount)): 
    row = cursor.fetchone() 

没有麻烦。

for var in cursor: 

似乎对我错了。

results = cur.fetchall() 
for var in enumerate(results): 

那里基本上是一样的东西。但是,如果您必须在迭代第一组结果时执行另一次执行,则会允许关闭游标。通常我只是在这些实例中声明另一个游标。

在任何一种情况下,您当前的代码似乎都不会提取执行的结果。如果您需要处理这些数据,这非常重要。

+0

感谢您捕捉这些错误。我正在使用cursor.executemany函数以及上面的代码,该部分似乎正在工作。 – 2012-04-25 18:07:51