无法将INSERT查询中的POINT数据类型转换为PostgreSQL。经度,纬度需要插入表格

问题描述 投票:0回答:1

我试图通过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));

错误:

>提示:psycopg2.ProgrammingError:列“camerageolocation”的类型为point,但表达式的类型为numeric

第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,'...

python database postgresql psycopg2 point
1个回答
0
投票

单引号第三次尝试。这有效:SELECT '(13.0843, 80.2805)'::POINT

© www.soinside.com 2019 - 2024. All rights reserved.