0

我正在编写一个从数据库表中选择并遍历行的脚本。

在 MySQL 中,我会这样做:

import MySQLdb
db_mysql=MySQLdb.Connect(user=...,passwd=...,db=..., host=...)
cur = db_mysql.cursor(MySQLdb.cursors.DictCursor)
cur.execute ("""SELECT X,Y,Z FROM tab_a""")
for row in crs.fetchall () :
     do things...

但我不知道如何在 PostgreSQL 中做到这一点。基本上这个问题可能是如何将上面的 MySQL 代码转换为与 PostgreSQL 一起工作。

这就是我到目前为止所拥有的(我正在使用 PyGreSQL)。

import pg
pos = pg.connect(dbname=...,user=...,passwd=...,host=..., port=...)
pos.query("""SELECT X,Y,Z FROM tab_a""")

如何迭代查询结果?

4

2 回答 2

1

从http://www.pygresql.org/contents/tutorial.html检索,您应该阅读。

q = db.query('select * from fruits')
q.getresult()

结果是一个 Python 元组列表,eardh 元组包含一行,您只需要遍历列表并迭代或索引元组。

于 2016-04-14T07:53:57.890 回答
0

我认为是一样的,你必须创建游标,调用一些 fetch 和迭代,就像在 MySQL 中一样:

import pgdb
pos = pgdb.connect(database=...,user=...,password=...,host=..., port=...)
sel = "select version() as x, current_timestamp as y, current_user as z"
cursor = db_conn().cursor()
cursor.execute(sel)
columns_descr = cursor.description
rows = cursor.fetchall()
for row in rows:
    x, y, z = row
    print('variables:')
    print('%s\t%s\t%s' % (x, y, z))
    print('\nrow:')
    print(row)
    print('\ncolumns:')
    for i in range(len(columns_descr)):
        print('-- %s (%s) --' % (columns_descr[i][0], columns_descr[i][1]))
        print('%s' % (row[i]))
    # this will work with PyGreSQL >= 5.0
    print('\n testing named tuples')
    print('%s\t%s\t%s' % (row.x, row.y, row.z))
于 2016-04-14T07:46:57.740 回答