使用Python中的PostgreSQL执行返回None

时间:2015-07-29 19:45:03

标签: python postgresql function

这是我的代码

conn_string = "dbname=detector user=postgres password=1234 host=localhost port=5432"
print "Connecting to database\n    ->%s" % (conn_string)     
# get a connection, if a connect cannot be made an exception will be raised here
conn = psycopg2.connect(conn_string)

正在输出这个,这似乎没问题。

Connecting to database
    ->dbname=detector user=postgres password=1234 host=localhost port=5432

我将此连接用作function(data, conn)。 现在,我注意到测试命令的奇怪输出:

_measurement_id = cursor.execute(
    'SELECT measurement_id FROM measurements ORDER BY time desc limit 1;'
);

通过Python返回None但在psql内,我得到一个整数。 我认为错误在于不使用try-catch - 除了创建连接。

如果这是问题,我如何将PostgreSQL连接传递给Python中的函数?

2 个答案:

答案 0 :(得分:3)

cursor.execute不会返回任何内容。执行查询后,您需要使用cursor.fetchonecursor.fetchallfor row in cursor:来检索结果。

cursor.execute("...")
_measurement_id = cursor.fetchone()

它与异常处理无关。

答案 1 :(得分:0)

尝试这样做

try:
    cursor.execute(
    'SELECT measurement_id FROM measurements ORDER BY time desc limit 1;')
    _measurement_id = cursor.fetchone()
except psycopg2.Error as e:
    pass
finally:
    cursor.close()