2016-11-10 10 views
0

私はPythonの新機能です。Pythonは関数内でコマンドワードを使用します

これはPython Webサービス(Flask)コードの一部です。

loginでは、コマンドとしてパラメータを使用していますが、ログイン機能を呼び出すための他のクラスはありません。

私の質問は ここでは何をしますか?

import MySQLdb as mydb 

def login(command): 
    command = command[1:] 
    command = command[:-1] 
    command = command[15:] 
    i = 0 
    while command[i] != ',': 
     i = i + 1 
    username = command[:i - 1] 
    command = command[i + 17:] 
    i = 0 
    while command[i] != ',': 
     i = i + 1 
    password = command[:i - 1] 
    return queryUser(username, password) 

def queryUser(username, password): 
    sdb = mydb.connect(host='127.0.0.1',user='root',passwd='1',db='testDB') 
    query = sdb.cursor() 
    query.execute("""SELECT user_id FROM user_info WHERE user_id = %s AND user_password = %s""", (username,password,)) 
    if query.fetchone() is not None: 
     query.close() 
     sdb.close() 
     return 'true' 
    else: 
     query.close() 
     sdb.close() 
     return 'false: Invalid username and password' 
+0

文字列です。カンマ区切り文字で情報が含まれているようです。 – Barmar

+1

'login()'と呼ばれるものが表示されない場合は、それがFlaskによって自動的に呼び出されたものと思われます。 Flaskのドキュメンテーションは、 'command'パラメータの内容を説明する必要があります。 – Barmar

+0

これは、ユーザ名とパスワードと他の情報とを含む文字列のための一種の 'split'の恐ろしい実装であるようです。この関数の呼び出し例がありますか? – brianpck

答えて

0

私は、これはコードベース内の別の場所(またはFlask自体によって自動的に)別のモジュールによってインポートされた関数だと思います。コードは恐ろしくunpythonicですが、私が言うことができるものから、commandはこのようなカンマで区切られた、ユーザ名とパスワードを含む文字列です:

login('????????????????awd,?????????????????1234cats,?????') → queryUser('awd', '1234cats') 
+0

more: 'login( 'aaaaaaaaaaaaaaaaaaa、bbbbbbbbbbbbbbbbbbb、c')' - > 'queryUser( 'aa'、 'bb')' – brianpck

+1

そこにはユーザー名とパスワード以上のものが必要です。 'command = command [15:]'と 'command = command [i + 17:]' – Barmar

+0

がおそらく真であることに注意してください。これは、文字列から2つのフィールドを抜き出します。 –

0

コマンドは、この

command = command[1:] 
command = command[:-1] 
command = command[15:] 
から書き換えることでしょうこれに

command[16:-1] 

あなたがコンマ文字を使用することにより文字列を分割したい場合:

my_list = command.split(',') 

私はこれらの2つの概念を実践することがプログラミングに役立つと思います。 (PythonはCと似ていません)。 ルーピングの詳細はhttps://www.youtube.com/watch?v=EnSu9hHGq5o

関連する問題