Я новичок в python и использую Python & PostgreSQL (9.03) (и psycopg2 для взаимодействия между ними) в среде Windows XP.Я работаю над огромным пространственным набором данных дорожной сети и разделяю данные по странам с помощью геообработки ArcGIS, и автоматически сохраняю их в базе данных PostGIS (1.5).Хотя при получении значений из базы данных все работает как запланировано:
... try: conn = psycopg2.connect ("host = '" + HostName + "' dbname = '" + DBName + "' user ='"+ Username +"' password = '"+ Password +"' ") curs = conn.cursor () кроме: print" Невозможно подключиться к базе данных "
SQLStatement =" SELECT data_partition FROM наборов данных WHEREmap_partition = '"+ MapPartitions [0] +"' "curs.execute (SQLStatement) ...
Когда я пытаюсь передать следующий оператор объединения в Postgres, результирующая таблица отсутствует, хотя если явозьмите напечатанный оператор SQL и запустите его как оператор SQL и запустите его PostgresSQL, он создаст желаемую результирующую таблицу:
conn = psycopg2.connect ("host = '" + HostName + "' dbname = '"+ DBName +" 'user =' "+ Username +" 'password =' "+ Password +" '") cur = conn.cursor ()
SQLStatement = (
"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, то это результирующий запросy:
print SQLStatement
CREATE TABLE сжатых данных.FRA24_Lines_2011_03 КАК ВЫБРАТЬ * ИЗ СЖИЖЕННЫХ ДАННЫХ.FRA24_Lines_2011_03_Net2 UNION SELECT * FROM сжатых данных.FRA24_Lines_2011_03_Net3 UNION SELECT * FROM сжатых данных.FRA24_Lines_2011_03_Net4 UNION SELECT * FROM сжатых данных.
Я использую переменные в для слияния разных классов дорожной сети, и из-за разных разделов моего набора данных мне нужно их перебирать, но по какой-то причине, которую я до сих пор не могу понять, естьне производится таблица
Есть идеи?
Заранее спасибо за помощь