【发布时间】:2011-09-09 04:38:15
【问题描述】:
我是 python 新手,在 Windows XP 环境中使用 Python 和 PostgreSQL (9.03)(以及 psycopg2 在两者之间进行接口)。 我正在研究一个巨大的空间数据集道路网络数据集,并通过 ArcGIS 地理处理分离每个国家/地区的数据,并自动将它们存储在 PostGIS (1.5) 数据库中。 当从数据库中检索值时,一切都按计划进行:
... 尝试: conn = psycopg2.connect("host = '" + HostName + "' dbname='" + DBName + "' user='" + Username + "'password='" + Password + "'") curs = conn.cursor() 除了: print "无法连接数据库"
SQLStatement = "SELECT data_partition FROM datasets WHERE map_partition='" + MapPartitions[0] + "'" curs.execute(SQL 语句) ...
当我尝试将以下联合语句传递给 Postgres 时,没有结果表,而如果我将打印的 SQL 语句作为 SQL 语句运行并运行 PostgresSQL,它会创建所需的结果表:
conn = psycopg2.connect("host = '" + HostName + "' dbname='" + DBName + "' user='" + Username + "'password='" + Password + "'") cur = conn.cursor()
SQL 语句 = (
"CREATE TABLE " + Schema + "." + PartitionTableName + " AS \n"
"SELECT * FROM " + Schema + "." + partName + "_Lines_" + Rel + "_Net0 UNION \n"
"SELECT * FROM " + Schema + "." + partName + "_Lines_" + Rel + "_Net1 UNION \n"
"SELECT * FROM " + Schema + "." + partName + "_Lines_" + Rel + "_Net2 UNION \n"
"SELECT * FROM " + Schema + "." + partName + "_Lines_" + Rel + "_Net3 UNION \n"
"SELECT * FROM " + Schema + "." + partName + "_Lines_" + Rel + "_Net4 UNION \n"
"SELECT * FROM " + Schema + "." + partName + "_Lines_" + Rel + "_Net5;\n"
"\n"
"\n"
"ALTER TABLE " + Schema + "." + partName + "_Lines_" + Rel + "\n"
"DROP COLUMN gid;\n"
cur.execute(SQLStatement)
conn.commit()
cur.close()
如果我们打印 SQL 语句,这是结果查询:
打印 SQL 语句
创建表压缩数据.FRA24_Lines_2011_03 AS 选择 * FROM 压缩数据.FRA24_Lines_2011_03_Net0 UNION 选择 * FROM 压缩数据.FRA24_Lines_2011_03_Net1 UNION 选择 * FROM 压缩数据.FRA24_Lines_2011_03_Net2 UNION SELECT * FROM compresseddata.FRA24_Lines_2011_03_Net3 UNION 选择 * FROM 压缩数据.FRA24_Lines_2011_03_Net4 UNION SELECT * FROMcompresseddata.FRA24_Lines_2011_03_Net5;
ALTER TABLE 压缩数据.FRA24_Lines_2011_03
删除列 gid;
我在合并不同的道路网络类中使用变量,并且由于我的数据集的不同分区,我需要遍历它们,但由于某种我仍然无法理解的原因,没有生成表。
有什么想法吗?
提前感谢您的帮助
【问题讨论】:
标签: python postgresql postgis psycopg2