【问题标题】:Extracting accounts from sqlite3 database with python使用 python 从 sqlite3 数据库中提取帐户
【发布时间】:2014-04-23 09:59:45
【问题描述】:

我正在为我的帐户管理系统创建一个审批系统。注册用户后,数据库中有一个条目为 Approved,该条目设置为 false,但是当管理员登录时,我希望他返回一个帐户列表,其中批准的行为 False。我已尝试使用此 SQL 语句,但只得到第一个而不是全部。

c.execute("SELECT * FROM accounts WHERE approved=?", (False,))
ifapproved=c.fetchone()
print (ifapproved)

我曾尝试使用 for 循环,但它只是重复第一个未获批准的帐户。我该如何解决这个问题?

【问题讨论】:

  • 我想 remove , 在 false 之后尝试

标签: python sql login sqlite account


【解决方案1】:

您的 execute 方法中有错误的语法。

例如:

cur.execute("SELECT Name, Price FROM Cars WHERE Id=:Id", {"Id": uId})

c.execute("SELECT * FROM accounts WHERE approved=:approved", {"approved":'false'}) 
//with or without the single quite to false.
rows = c.fetchall()

for row in rows:
    print (row)  //check all list of returned results
  

c.execute("SELECT * FROM accounts WHERE approved = 'False'")

c.execute("SELECT * FROM accounts WHERE approved = 'false'")

c.execute("SELECT * FROM accounts WHERE approved = '0'")

【讨论】:

  • wt 是你的答案和下面的答案之间的区别
  • 不起作用,仍然只能获得第一个帐户。
  • 语法是什么?你试过不带 queto 的 False
  • 我删除了引号并将其保留为 False,因为批准等于布尔值 False 或 True,而不是字符串 'False' 或 'True'
  • 现在试试,你已经使用了 fetchOne ... 和一个 select * 查询,所以像上面一样获取所有内容并使用 for 循环中的行 ..cheers!
【解决方案2】:

这样试试

stmt="""SELECT * FROM accounts WHERE approved=:APPROVAL"""
d["APPROVAL"]=False

 c.execute(unicode(stmt), d)
ifapproved=c.fetchone()
print (ifapproved)

【讨论】:

  • 我收到一个错误,d 不是全局定义的。我正在使用 Python3 顺便说一句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
相关资源
最近更新 更多