zoukankan      html  css  js  c++  java
  • Encode query with Python

        Encode query with Python

        From WABI

        Jump to: navigation, search

        Contents

        [hide]

            1 Summary

            2 Description

            3 Sample program

            4 Link

        Summary

        Result may not be able to be retrieved normally, if query including non alphanumeric character is used with Python.

        Description

        You have to encode your query. If qPath is a query to be encoded, please do as follows.

        import urllib

        urllib.urlencode({'<parameter_name>':qPath,})

        Sample program

        This tutorial introduces a example that retrieve entries which feature-key is 'rRNA', qualifier name is 'product' and has '16s ribosomal RNA' in qualifier value with searchByXMLPath of ARSA.

        Download this program

        import socket

        import urllib

        #set server

        host = "xml.nig.ac.jp"

        port =  80

        #set API server

        url = "/rest/Invoke"

        qPath = "/ENTRY/DDBJ/feature-table/feature/f_key=='rRNA' AND "

        qPath = qPath + "(/ENTRY/DDBJ/feature-table/feature{/f_key=='rRNA' AND "

        qPath = qPath + "/f_quals/qualifier{/q_name=='product' AND /q_value='16S ribosomal RNA'}}) "

        rPath = "/ENTRY/DDBJ/primary-accession,/ENTRY/DDBJ/definition"

        offset = "1";

        count = "10";

        query = urllib.urlencode({'queryPath':qPath,'returnPath':rPath,'offset':offset,'count':count});

        #set parameter

        query = "service=ARSA&method=searchByXMLPath&"+ query;

        #make connection

        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        try:

        sock.connect((host, port))

        sock.send("POST " + url + " HTTP/1.0\n")

        sock.send("Content-Type: application/x-www-form-urlencoded\n")

        sock.send("User-Agent: python/socket\n")

        sock.send("Content-Length:" + `len(query)` + "\n\n")

        sock.send(query)

        except socket.error, e:

        print 'Error: %s' % e

        while 1:

        rcvmsg = sock.recv(1024)

        print rcvmsg,

        if rcvmsg == :

        break

        sock.close

  • 相关阅读:
    关于数据库的索引知识
    RESTful API设计相关
    Coroutine(协程)模式与线程
    Python网络编程中的服务器架构(负载均衡、单线程、多线程和同步、异步等)
    读懂diff
    Linux学习笔记——如何使用echo指令向文件写入内容
    ubuntu中执行定时任务crontab
    网络编程之异步IO,rabbitMQ笔记
    走进docker的世界之入门篇
    xml基础
  • 原文地址:https://www.cnblogs.com/lexus/p/2405397.html
Copyright © 2011-2022 走看看