我试图通过INSERT查询将存储为python变量的纬度和经度插入到PostgreSQL的表中。关于如何投射Point的任何建议除了我尝试过的之外?
我首先尝试了插入查询,如图所示 -
这是表:
cur.execute('''CREATE TABLE AccidentList (
accidentId SERIAL PRIMARY KEY,
cameraGeoLocation POINT,
accidentTimeStamp TIMESTAMPTZ);''')
Try1:
cur.execute("INSERT INTO AccidentList(cameraGeoLocation,accidentTimeStamp)
VALUES {}".format((lat,lon),ts));
错误:
第1行:... ist(cameraGeoLocation,accidentTimeStamp)VALUES(13.0843,8 ... ^
提示:您需要重写或转换表达式。
Try2:
query = "INSERT INTO AccidentList (cameraGeoLocation,accidentTimeStamp)
VALUES(cameraGeoLocation::POINT, accidentTimeStamp::TIMESTAMPTZ);"
data = ((lat,lon),ts)
cur.execute(query,data)
错误:
第1行:...列表(cameraGeoLocation,accidentTimeStamp)VALUES(cameraGeoL ... ^
提示:表“accidentlist”中有一个名为“camerageolocation”的列,但不能从查询的这一部分引用它。
尝试3:
query = "INSERT INTO AccidentList (camerageolocation ,accidenttimestamp) VALUES(%s::POINT, %s);"
data = (POINT(lat,lon),ts)
cur.execute(query,data)
错误:
cur.execute(查询,数据)psycopg2.ProgrammingError:无法将类型记录转换为指向LINE 1:... tion,accidenttimestamp)VALUES((13.0843,80.2805):: POINT,'...
单引号第三次尝试。这有效:SELECT '(13.0843, 80.2805)'::POINT