使用python从查询返回元组

时间:2016-05-21 12:01:02

标签: python mysql database flask

我目前正在使用python和Flask来查询数据库。我有以下功能:`

def get_details(username):

  conn = database_connect()
  if(conn is None):
      return ERROR_CODE
  cur = conn.cursor()
  val = None

  try:
     cur.execute("""SELECT username, name, age, address
                    FROM users
                    WHERE username = %s;""",(username))

     val = cur.fetchone()
  except:
     print("failed to retrieve")

  cur.close()
  conn.close()
  return val
“users”表中的用户名是主键,因此此查询只返回一个元组(通过在postgress中手动查询来确认)。然而,“val”总是“无”。我也试过使用fetchall()但这也不起作用。

查询本身有问题吗?我该如何编码?

1 个答案:

答案 0 :(得分:3)

将查询参数传递给查询的方式存在问题。将它们传递给元组:

cur.execute("""SELECT username, name, age, address
               FROM users
               WHERE username = %s""", (username, ))
                       # comma is important HERE^

作为旁注,请考虑使用ORM而不是直接访问数据库并手动构建SQL查询。有一个相关的软件包供您探索:flask-sqlalchemy