当前位置: 首页>>代码示例>>Python>>正文


Python GraphDatabase.execute方法代码示例

本文整理汇总了Python中graphserver.graphdb.GraphDatabase.execute方法的典型用法代码示例。如果您正苦于以下问题:Python GraphDatabase.execute方法的具体用法?Python GraphDatabase.execute怎么用?Python GraphDatabase.execute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在graphserver.graphdb.GraphDatabase的用法示例。


在下文中一共展示了GraphDatabase.execute方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: test_basic

# 需要导入模块: from graphserver.graphdb import GraphDatabase [as 别名]
# 或者: from graphserver.graphdb.GraphDatabase import execute [as 别名]
 def test_basic(self):
     g = Graph()
     g.add_vertex("A")
     g.add_vertex("B")
     g.add_edge("A", "B", Link())
     g.add_edge("A", "B", Street("foo", 20.0))
     gdb_file = os.path.dirname(__file__) + "unit_test.db"
     if os.path.exists(gdb_file):
         os.remove(gdb_file)        
     gdb = GraphDatabase(gdb_file)
     gdb.populate(g)
     
     list(gdb.execute("select * from resources"))
     assert "A" in list(gdb.all_vertex_labels())
     assert "B" in list(gdb.all_vertex_labels())
     assert glen(gdb.all_edges()) == 2
     assert glen(gdb.all_outgoing("A")) == 2
     assert glen(gdb.all_outgoing("B")) == 0
     assert glen(gdb.all_incoming("A")) == 0
     assert glen(gdb.all_incoming("B")) == 2
     assert glen(gdb.resources()) == 0
     assert gdb.num_vertices() == 2
     assert gdb.num_edges() == 2
     
     g.destroy()
     g = gdb.incarnate()
     
     list(gdb.execute("select * from resources"))
     assert "A" in list(gdb.all_vertex_labels())
     assert "B" in list(gdb.all_vertex_labels())
     assert glen(gdb.all_edges()) == 2
     assert glen(gdb.all_outgoing("A")) == 2
     assert glen(gdb.all_outgoing("B")) == 0
     assert glen(gdb.all_incoming("A")) == 0
     assert glen(gdb.all_incoming("B")) == 2
     assert glen(gdb.resources()) == 0
     assert gdb.num_vertices() == 2
     assert gdb.num_edges() == 2
     
     os.remove( gdb_file )
开发者ID:Jamie5,项目名称:graphserver,代码行数:42,代码来源:test_graph_database.py

示例2: GraphCrawler

# 需要导入模块: from graphserver.graphdb import GraphDatabase [as 别名]
# 或者: from graphserver.graphdb.GraphDatabase import execute [as 别名]
class GraphCrawler(Servable):
    def __init__(self, graphdb_filename):
        self.graphdb = GraphDatabase( graphdb_filename )
    
    def vertices(self, like=None):
        if like:
            return "\n".join( ["<a href=\"/vertex?label=&quot;%s&quot;\">%s</a><br>"%(vl[0], vl[0]) 
                               for vl in self.graphdb.execute("SELECT label from vertices where label like ? order by label", (like,)) ])
        else:
            return "\n".join( ["<a href=\"/vertex?label=&quot;%s&quot;\">%s</a><br>"%(vl[0], vl[0]) 
                               for vl in self.graphdb.execute("SELECT label from vertices order by label") ])
    vertices.mime = "text/html"
    
    def vertex(self, label, currtime=None, hill_reluctance=1.5, walking_speed=0.85):
        currtime = currtime or int(time.time())
        
        ret = []
        ret.append( "<h1>%s</h1>"%label )
        
        wo = WalkOptions()
        ret.append( "<h3>walk options</h3>" )
        ret.append( "<li>transfer_penalty: %s</li>"%wo.transfer_penalty )
        ret.append( "<li>turn_penalty: %s</li>"%wo.turn_penalty )
        ret.append( "<li>walking_speed: %s</li>"%wo.walking_speed )
        ret.append( "<li>walking_reluctance: %s</li>"%wo.walking_reluctance )
        ret.append( "<li>uphill_slowness: %s</li>"%wo.uphill_slowness )
        ret.append( "<li>downhill_fastness: %s</li>"%wo.downhill_fastness )
        ret.append( "<li>hill_reluctance: %s</li>"%wo.hill_reluctance )
        ret.append( "<li>max_walk: %s</li>"%wo.max_walk )
        ret.append( "<li>walking_overage: %s</li>"%wo.walking_overage )
        
        
        ret.append( "<h3>incoming from:</h3>" )
        for i, (vertex1, vertex2, edgetype) in enumerate( self.graphdb.all_incoming( label ) ):
            s1 = State(1,int(currtime))
            wo = WalkOptions()
            wo.hill_reluctance=hill_reluctance
            wo.walking_speed=walking_speed
            s0 = edgetype.walk_back( s1, wo )
            
            if s0:
                toterm = "<a href=\"/vertex?label=&quot;%s&quot;&currtime=%d\">%[email protected]%d</a>"%(vertex1, s0.time, vertex1, s1.time)
            else:
                toterm = "<a href=\"/vertex?label=&quot;%s&quot;\">%s</a>"%(vertex1, vertex1)
            
            ret.append( "%s<br><pre>&nbsp;&nbsp;&nbsp;via %s (<a href=\"/incoming?label=&quot;%s&quot;&edgenum=%d\">details</a>)</pre>"%(toterm, cgi.escape(repr(edgetype)), vertex2, i) )
            
            if s0:
                ret.append( "<pre>&nbsp;&nbsp;&nbsp;%s</pre>"%cgi.escape(str(s0)) )
            
            
        ret.append( "<h3>outgoing to:</h3>" )
        for i, (vertex1, vertex2, edgetype) in enumerate( self.graphdb.all_outgoing( label ) ):
            s0 = State(1,int(currtime))
            wo = WalkOptions()
            wo.hill_reluctance=hill_reluctance
            wo.walking_speed=walking_speed
            s1 = edgetype.walk( s0, wo )
            
            if s1:
                toterm = "<a href=\"/vertex?label=&quot;%s&quot;&currtime=%d\">%[email protected]%d</a>"%(vertex2, s1.time, vertex2, s1.time)
            else:
                toterm = "<a href=\"/vertex?label=&quot;%s&quot;\">%s</a>"%(vertex2, vertex2)
            
            ret.append( "%s<br><pre>&nbsp;&nbsp;&nbsp;via %s (<a href=\"/outgoing?label=&quot;%s&quot;&edgenum=%d\">details</a>)</pre>"%(toterm, cgi.escape(repr(edgetype)), vertex1, i) )
            
            if s1:
                ret.append( "<pre>&nbsp;&nbsp;&nbsp;%s</pre>"%cgi.escape(str(s1)) )
        
        wo.destroy()
        
        return "".join(ret)
    vertex.mime = "text/html"
    
    def outgoing(self, label, edgenum):
        all_outgoing = list( self.graphdb.all_outgoing( label ) )
        
        fromv, tov, edge = all_outgoing[edgenum]
        
        return edge.expound()
        
    def incoming(self, label, edgenum):
        all_incoming = list( self.graphdb.all_incoming( label ) )
        
        fromv, tov, edge = all_incoming[edgenum]
        
        return edge.expound()
    
    def str(self):
        return str(self.graphdb)
开发者ID:Jamie5,项目名称:graphserver,代码行数:92,代码来源:graphcrawler.py

示例3: main

# 需要导入模块: from graphserver.graphdb import GraphDatabase [as 别名]
# 或者: from graphserver.graphdb.GraphDatabase import execute [as 别名]
def main():
    usage = """usage: python wktize_gdb.py <graphdb_filename> <osmdb_filename> <gtfsdb_filename>"""
    parser = OptionParser(usage=usage)
    
    (options, args) = parser.parse_args()
    
    if len(args) != 3:
        parser.print_help()
        exit(-1)
        
    graphdb_filename = args[0]
    osmdb_filename   = args[1]
    gtfsdb_filename  = args[2]
    
    gtfsdb = GTFSDatabase( gtfsdb_filename )
    osmdb = OSMDB( osmdb_filename )
    gdb = GraphDatabase( graphdb_filename )
    
    def vertex_interesting(vlabel) :
        return vlabel[0:4] == 'sta-' or vlabel[0:4] == 'osm-'  
    
    def vertex_lookup(vlabel) :
        if vlabel[0:4] == 'sta-' :
            id, name, lat, lon = gtfsdb.stop(vlabel[4:])
            vclass = 'GTFS Stop'
        elif vlabel[0:4] == 'osm-' :
            id, tags, lat, lon, endnode_refs = osmdb.node(vlabel[4:])
            vclass = 'OSM Node'
        else : 
            lat = None
            lon = None
            vclass = None
        return vclass, lat, lon

    c = gdb.get_cursor()
    c.execute( "CREATE TABLE IF NOT EXISTS geom_vertices (label TEXT UNIQUE ON CONFLICT IGNORE, class TEXT, WKT_GEOMETRY TEXT)" )
    c.execute( "CREATE TABLE IF NOT EXISTS geom_edges (class TEXT, WKT_GEOMETRY TEXT)" )
    gdb.commit()

    num_vertices = gdb.num_vertices()
    curr_vertex = 0
    for vlabel in gdb.all_vertex_labels() :
        curr_vertex += 1
        if curr_vertex % 1000 == 0 : 
            sys.stdout.write( '\rVertex %i/%i' % (curr_vertex, num_vertices) )
            sys.stdout.flush()
        if not vertex_interesting(vlabel) : continue
        vclass, lat, lon = vertex_lookup(vlabel)
        c.execute("INSERT INTO geom_vertices VALUES (?, ?, ?)", (vlabel, vclass, "POINT(%s %s)" % (lon, lat)))
    gdb.commit()
        
    print ' '
    num_edges = gdb.num_edges()
    curr_edge = 0
    edges = gdb.execute( "SELECT vertex1, vertex2, edgetype, edgestate FROM edges" )
    for vertex1, vertex2, edgetype, edgestate in edges :
        curr_edge += 1
        if curr_edge % 1000 == 0 : 
            sys.stdout.write( '\rEdge %i/%i' % (curr_edge, num_edges) )
            sys.stdout.flush()
        if not (vertex_interesting(vertex1) and vertex_interesting(vertex2)) : continue
        vclass1, lat1, lon1 = vertex_lookup(vertex1)
        vclass2, lat2, lon2 = vertex_lookup(vertex2)
        c.execute("INSERT INTO geom_edges VALUES (?, ?)", (edgetype, "LINESTRING(%s %s, %s %s)" % (lon1, lat1, lon2, lat2)))
    gdb.commit()

    print '\nIndexing...'
    gdb.execute( "CREATE INDEX IF NOT EXISTS geom_vertices_label ON geom_vertices (label)" )
    gdb.execute( "CREATE INDEX IF NOT EXISTS geom_vertices_class ON geom_vertices (class)" )
    gdb.execute( "CREATE INDEX IF NOT EXISTS geom_edges_class ON geom_edges (class)" )
开发者ID:abyrd,项目名称:metric-embedding,代码行数:72,代码来源:gdb_add_wkt.py


注:本文中的graphserver.graphdb.GraphDatabase.execute方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。