每次都使用pgRouting而不在PostgreSQL中执行sql文件

时间:2014-04-17 01:42:53

标签: postgresql pgrouting

我已经安装了pgRouting,每当我在PostgreSQL中创建一个新数据库时,为了使用pgRouting函数,我必须执行pgRouting的3个sql文件,

  • routing_core
  • routing_core_wrappers
  • routing_core_wrappers

我是否可以在创建数据库后立即使用pgRouting函数而不是每次都执行其sql文件?如何?

我在Windows 8.1 x64下使用PostgreSQL 8.4,谢谢。


更新#1

我已经安装了PostgreSQL 9.2并创建了一个名为“test”的数据库,在其中加载了shapefile,但是当我执行下面的sql行时,错误信息显示python找不到9.2服务器,

import sys
import psycopg2

conn = psycopg2.connect("dbname = 'test' user = 'postgres' host = 'localhost' password = 'ntubse40'")
cur = conn.cursor()

query = """
    ALTER TABLE tc_2000_w_area ADD COLUMN source integer;
    ALTER TABLE tc_2000_w_area ADD COLUMN target integer;
    SELECT assign_vertex_id('tc_2000_w_area', 0.0001, 'the_geom', 'gid')
;"""
cur.execute(query)

#print out table and check its change
cur.copy_to(sys.stdout, 'tc_2000_w_area', sep = '|')

cur.close()

>>> 

Traceback (most recent call last):
  File "C:/Users/Heinz/Desktop/python_test/any_test.py", line 4, in <module>
    conn = psycopg2.connect("dbname = 'test' user = 'postgres' host = 'localhost' password = 'ntubse40'")
  File "C:\Python27\lib\site-packages\psycopg2\__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
OperationalError: 嚴重錯誤:  資料庫"test"不存在

更新#2 我终于解决了更改服务器问题(只是一个愚蠢的问题,谢谢Craig Ringer!),我尝试以下代码,成功连接到9.2服务器,

import sys
import psycopg2

conn = psycopg2.connect("port = '5433' dbname = 'test' user = 'postgres' host = 'localhost' password = 'xxxx'")
cur = conn.cursor()

query = """
    ALTER TABLE tc_2000_w_area ADD COLUMN source integer;
    ALTER TABLE tc_2000_w_area ADD COLUMN target integer;
    SELECT assign_vertex_id('tc_2000_w_area', 0.0001, 'the_geom', 'gid')
;"""
cur.execute(query)

#print out table and check its change
cur.copy_to(sys.stdout, 'tc_2000_w_area', sep = '|')

cur.close()

1 个答案:

答案 0 :(得分:0)

如上所述,有两种方法可以做到这一点:

  1. 对于postgres 9.0+,您可以使用创建扩展名,如:

    createdb mynewdb

    psql -c“create extension postgis”mynewdb

    psql -c“create extension pgrouting”mynewdb

  2. for postgres 8.4创建模板数据库

    createdb template_pgrouting

    psql -c“create language plpgsql”template_pgrouting

    psql -f /path/to/postgis.sql template_pgrouting

    psql -f /path/to/pgrouting.sql template_pgrouting

  3. 使用模板

    创建新数据库

    createdb -T template_pgrouting mynewdb

    createdb -T template_pgrouting anotherdb

  4. 在步骤中,我将保留确切的文件和路径作为读者的练习。