import sqlite3
conn = sqlite3.connect("test.db")
conn.execute(
"""CREATE TABLE USER(
ID INTEGER NOT NULL PRIMARY KEY ,
USERNAME TEXT NOT NULL UNIQUE,
PASSWORD TEXT NOT NULL,
LOCK TEXT NOT NULL DEFAULT 'FALSE',
LOCKTIME FLOAT DEFAULT NULL);"""
)
conn.execute("INSERT INTO USER (USERNAME,PASSWORD) VALUES ('lily',123456)")
conn.commit()
conn.close()
# --------------------------------------
# 以上是基础数据,为各位提供背景数据
# 以下是遇到的问题
# --------------------------------------
# 第一种场景:可以正常运行
conn = sqlite3.connect("test.db")
user_info = conn.execute(
"SELECT PASSWORD,LOCK,LOCKTIME FROM USER WHERE USERNAME = 'lily'"
)
print("场景一:{}".format(user_info.fetchone())) # 这一行可正常出结果
conn.close()
# 第二种场景:不能运行
conn = sqlite3.connect("test.db")
try:
user_info = conn.execute(
"SELECT PASSWORD,LOCK,LOCKTIME FROM USER WHERE USERNAME = 'lily'"
)
if user_info.fetchone()[1] == "TRUE":
print("此账号已锁定")
else:
print("没有锁定,可以继续")
print(
"场景二:{}".format(user_info.fetchone())
) # 【遇到的问题】这一行结果为None,请问为什么不出结果?要怎么改才能像【场景一】一样出结果?
except Exception as e:
print(str(e))
print("用户不存在")
conn.close()
【python】【sqlite】对SELECT结果的二次处理,同一代码不同场景不生效的原因?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- soar3033 2021-07-23 15:46关注
改成这样
import sqlite3 conn = sqlite3.connect("test.db") conn.execute( """CREATE TABLE USER( ID INTEGER NOT NULL PRIMARY KEY , USERNAME TEXT NOT NULL UNIQUE, PASSWORD TEXT NOT NULL, LOCK TEXT NOT NULL DEFAULT 'FALSE', LOCKTIME FLOAT DEFAULT NULL);""" ) conn.execute("INSERT INTO USER (USERNAME,PASSWORD) VALUES ('lily',123456)") conn.commit() conn.close() # -------------------------------------- # 以上是基础数据,为各位提供背景数据 # 以下是遇到的问题 # -------------------------------------- # 第一种场景:可以正常运行 conn = sqlite3.connect("test.db") user_info = conn.execute( "SELECT PASSWORD,LOCK,LOCKTIME FROM USER WHERE USERNAME = 'lily'" ) print("场景一:{}".format(user_info.fetchone())) # 这一行可正常出结果 conn.close() # 第二种场景:不能运行 conn = sqlite3.connect("test.db") try: user_info = conn.execute( "SELECT PASSWORD,LOCK,LOCKTIME FROM USER WHERE USERNAME = 'lily'" ) res=user_info.fetchone() if res[1] == "TRUE": print("此账号已锁定") else: print("没有锁定,可以继续") print( "场景二:{}".format(res) ) # 【遇到的问题】这一行结果为None,请问为什么不出结果?要怎么改才能像【场景一】一样出结果? except Exception as e: print(str(e)) print("用户不存在") conn.close()
fetchone()是迭代的,你下面再次调用的时候实际上已经不是前面读取的那条了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
- ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥30 关于<main>标签页面跳转的问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加
- ¥15 用ns3仿真出5G核心网网元
- ¥15 matlab答疑 关于海上风电的爬坡事件检测
- ¥88 python部署量化回测异常问题