我正在编写一个脚本,它从数据库表中选择并遍历行。
在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""")
如何迭代查询结果?
答案 0 :(得分:1)
取自您应阅读的http://www.pygresql.org/contents/tutorial.html。
q = db.query('select * from fruits')
q.getresult()
结果是一个元组的Python列表,eardh元组包含一行,你只需要遍历列表并迭代或索引tupple。
答案 1 :(得分: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))