在Python中对命名游标多次调用execute()

时间:2012-04-25 15:10:54

标签: python postgresql

我正在编写一个Python脚本,它将文件从一个目录复制到另一个目录,并将该文件名复制到doc档案PostgreSQL表中。我收到的错误如下:

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 个答案:

答案 0 :(得分:1)

这是实际的代码吗?你在第二次执行中得到了无与伦比的报价。

在迭代结果时,我通常使用

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

没有麻烦。

for var in cursor: 

对我来说似乎不对。

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

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

在任何一种情况下,您当前的代码似乎都没有获取执行结果。如果您需要处理该数据,这一点很重要。