代码之家  ›  专栏  ›  技术社区  ›  MrTree

如何将python变量传递给sparql查询?

  •  0
  • MrTree  · 技术社区  · 3 年前

    我期待/希望这样的事情能奏效:

    import requests
    
    my_variable = 'wd:Q1968435'
    
    url = 'https://query.wikidata.org/sparql'
    query = """
        SELECT ?item ?itemLabel 
            WHERE 
                {
                ?item wdt:P31 "+my_variable+".
                SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
                }
        """
    r = requests.get(url, params= {'format': 'json', 'query': query})
    data = r.json()
    

    但这是行不通的。有简单的解决办法吗?

    提前谢谢!

    1 回复  |  直到 3 年前
        1
  •  0
  •   Marco Aurelio Fernandez Reyes    3 年前

    以身作则 this answer ,我修改了用于连接多行字符串的代码,如下所示:

    import requests
    
    my_variable = 'wd:Q1968435'
    
    url = 'https://query.wikidata.org/sparql'
    query = (
        'SELECT ?item ?itemLabel ',
         '   WHERE ',
         '       {',
         '       ?item wdt:P31 '+my_variable+'.', 
         '       SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }'
         '       }'
    )
    
    # make request: 
    r = requests.get(url, params= {'format': 'json', 'query': "".join(query)})
    data = r.json()
    print("".join(query)) # Here I'm printing the string concatenated as single line.
    
    # Print the result of the request.
    print(data)
    

    上一个字符串串联的结果是:

    SELECT ?item ?itemLabel    WHERE        {       ?item wdt:P31 wd:Q1968435.       SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }