我已经安装了pgRouting,每当我在PostgreSQL中创建一个新数据库时,为了使用pgRouting函数,我必须执行pgRouting的3个sql文件,
我是否可以在创建数据库后立即使用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()
答案 0 :(得分:0)
如上所述,有两种方法可以做到这一点:
对于postgres 9.0+,您可以使用创建扩展名,如:
createdb mynewdb
psql -c“create extension postgis”mynewdb
psql -c“create extension pgrouting”mynewdb
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
使用模板
创建新数据库createdb -T template_pgrouting mynewdb
createdb -T template_pgrouting anotherdb
在步骤中,我将保留确切的文件和路径作为读者的练习。