亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 pyodbc 從數據庫中檢索特定值

使用 pyodbc 從數據庫中檢索特定值

拉莫斯之舞 2022-01-05 19:56:04
我正在嘗試使用 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,而不是列表格式?
查看完整描述

3 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

你不能。按照設計,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")


查看完整回答
反對 回復 2022-01-05
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

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 個字符。


查看完整回答
反對 回復 2022-01-05
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

在這種情況下,如何從數據庫中僅檢索值 5555,而不是列表格式?

pyodbc 支持返回單個標量值的.fetchval()方法:

count = cursor.execute('select count(*) from users').fetchval()


查看完整回答
反對 回復 2022-01-05
  • 3 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號