-1

python と mongo を探索していて、以下で私が間違っていることを整理できません

変数を find_one() レコードに渡すにはどうすればよいですか?

以下のコードは機能しますが、id 値が find_one() にハードコードされているため、価値はありませんが、接続コードと関数が機能することを証明しています

from pymongo import MongoClient

#connect to mongo database hosted on dedicated mongo server
#the script expects the host name to be in  /etc/hosts file


#Set up global variables here

mongo_server = "mongo_api"
mongo_port = "27017"
mongo_user = "admin"
mongo_passwd = ":mypassword@"
connect_string = "mongodb://"+ mongo_user 
                             + mongo_passwd 
                             + mongo_server 
                             + ":" 
                             + mongo_port


def get_page(page_no):
    connection = MongoClient(connect_string)    # equal to > show dbs
    db = connection.test_database # equal to > use test_database                
    pages = db.pages
    my_page = pages.find_one({"id": 2})  <----  VALUE HARD CODED WORKS
    return (my_page)

print get_page(1)

以下のコードは失敗するか、NONE を返します 関数パラメーター page_no を find_one() 関数に渡してレコードを戻す方法が見つかりません

page_no を文字列などに変換しようとしましたが、ここで少し苦労しました。
以下のコード スニペットには、ページ番号の値を find_one() リクエストに渡そうとしたが無駄だったバリアントのいくつかが含まれています。

def get_page(page_no):
    index_val = str(page_no)
    connection = MongoClient(connect_string)    # equal to > show dbs
    db = connection.test_database # equal to > use test_database                
    pages = db.pages
    # NONE OF THESE VARIANTS WORK OTHERS I HAVE TRIED
    my_page = pages.find_one({"id": page_no})  <-- TRYING TO USE PARAMETER FAILS
    my_page = pages.find_one({"id": str(page_no)})
    my_page = pages.find_one({"id": index_val})

    return (my_page)

print get_page(1)

エラーまたは NONE が表示される

ところで、上記のパスワードは私の実際のパスワードではありません。接続文字列を他の人がどのように行ったかを確認できるように残しておくと思いました。

どんな助けでも感謝します。

ありがとう

4

1 に答える 1