2014-11-21 62 views
2

我是一个Python学习者,Python和PostgreSQL - GeomFromText

我试图插入几何记录到PostgreSQL。

如果我尝试没有几何列的查询,它工作正常,所有数据插入成功。

cur.execute("INSERT INTO taxi (userid,carNum) SELECT '"+str(msg['UserID'])+"',"+str(msg['CarNumber'])) 

一旦我尝试添加几何记录,什么都不会发生!执行结束时没有错误,但没有插入到数据库中。

cur.execute("INSERT INTO taxi (position,userid,carNum) SELECT GeomFromText('POINT("+str(float(msg['longitude']))+" "+str(float(msg['latitude']))+")',4326),'"+str(msg['UserID'])+"',"+str(msg['CarNumber'])) 

想不出什么,我在这里失踪

回答

1

您需要将数据提交到数据库。

检查psycopg2的文档http://initd.org/psycopg/docs/usage.html#passing-parameters-to-sql-queries

按照这些步骤

>>> import psycopg2 

# Connect to an existing database 
>>> conn = psycopg2.connect("dbname=test user=postgres") 

# Open a cursor to perform database operations 
>>> cur = conn.cursor() 

# Execute a command: this creates a new table 
>>> cur.execute("CREATE TABLE test (id serial PRIMARY KEY, num integer, data varchar);") 

# Pass data to fill a query placeholders and let Psycopg perform 
# the correct conversion (no more SQL injections!) 
>>> cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)", 
...  (100, "abc'def")) 

# Query the database and obtain data as Python objects 
>>> cur.execute("SELECT * FROM test;") 
>>> cur.fetchone() 
(1, 100, "abc'def") 

# Make the changes to the database persistent 
>>> conn.commit() 

# Close communication with the database 
>>> cur.close() 
>>> conn.close()