使用 pyodbc 从数据库中检索特定值

我正在尝试使用 Python 中的 pyodbc 从 SQL 表中获取特定值。表 dbo.passes 有 2 列:('user_name','password')包含 values ('test','5555')。我有以下代码:


cursor.execute("SELECT password FROM [dbo].[passes] where user_name ='test'")

for row in cursor.fetchall():

    print (row)


passw = input("enter pass ")

if passw == row: 

    print ("nice")

else:

    print ("wrong")

如果我的输入是5555它与“行”不匹配,因为它显示为('5555             ')


在这种情况下,如何从数据库中仅检索值 5555,而不是列表格式?


拉莫斯之舞
浏览 179回答 3
3回答

互换的青春

你不能。按照设计,SQL 返回元组。在 python 中访问您的列表值,如下所示:cursor.execute("SELECT password FROM [dbo].[passes] where user_name ='test'")for row in cursor.fetchall():    print (row)passw = input("enter pass ")if passw == row['password']: # Could also be row[0], idk you have to try    print ("nice")else:    print ("wrong")

至尊宝的传说

row[0] 建议有效,只是略有不同:cursor.execute("SELECT RTRIM (password) FROM [dbo].[passes] where user_name = 'test'")for row in cursor.fetchall():    print (row)sqlpass = row[0]print (sqlpass)passw = input("enter pass ")if passw == sqlpass:     print ("nice")else:    print ("wrong")RTRIM 是必需的,因为该字段是一个 varchar(20) 并且返回的字符串是存储的字符串加上任意数量的空格以获得 20 个字符。

胡说叔叔

在这种情况下,如何从数据库中仅检索值 5555,而不是列表格式?pyodbc 支持返回单个标量值的.fetchval()方法:count = cursor.execute('select count(*) from users').fetchval()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python