这是我的代码
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中的函数?
答案 0 :(得分:3)
cursor.execute
不会返回任何内容。执行查询后,您需要使用cursor.fetchone
,cursor.fetchall
或for 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()