2017-11-29 12 views
0
import sqlite3 

username=input(print("Username?")) 
password=input(print("Password?")) 

connection= sqlite3.connect("Logininfo.db") 
c = connection.cursor() 

IDuser=c.execute('SELECT Username, Password FROM LoginInfo WHERE Username= ? AND Password= ?', (username,password)).fetchone() 

print(IDuser) 

このコードから返されるデータは、「Hello1」と「Password1」(引用符なし)です。代わりに "( 'Hello1'、 'Password1')"を出力します。SQLiteデータベースクエリで間違った結果が返される

これはなぜですか? このデータを角かっことクォートマークなしで再取得するにはどうすればいいですか? "( 'Hello1'、" Hello1 "になります)

このコードでは、ユーザー名とパスワードの両方を要求する前に"そしてどのように私はそれを修正することができますか?

+0

投稿ごとに1つだけ質問してください。 – glibdud

+0

将来の投稿が通知された私の謝罪 – Sepy13

答えて

1

あなたの最初の質問に答えるには、それが文字列であることを伝えるための引用符があります。実際にはユーザー名やパスワードの一部ではないため、問題ではありません。同様に、角括弧はシーケンス(具体的にはタプル)であることを伝えるためにそこにあります。 Pythonはあなたに2つの文字列を渡さなければなりません。これは通常の方法です。これにより問題が発生した場合は、その理由を説明する必要があります。

Noneは、をinput()の機能の中に呼び出しているため、Noneが表示されます。 の戻り値はNoneです。プロンプトの印刷はすでにinput()に不可欠なので、その必要はありません。ちょうどinput("Username?")で十分です。

1

fetchone()1「タプル」またはクエリセット「オブジェクト」の結果を返します、あなたは多くの配列

トライプリント(IDuserのような個々の値にアクセスすることができます[0] )、それは "Hello1"を印刷します。

https://docs.python.org/2/library/sqlite3.htmlを参照して、より多くの情報をfetchone()コールで検索してください。 o。

関連する問題