Python 是否将点插入SQL Server?

Python 是否将点插入SQL Server?,python,sql-server,spatial-query,pymssql,Python,Sql Server,Spatial Query,Pymssql,对python来说是全新的,我喜欢它,我想这可能是一个简单的问题。 我目前正在的帮助下,通过Python脚本将点插入SQL Server 2008 这一切都很好。 我还需要将这些坐标插入一个字段(称为geog) 这将引发以下异常: 输入已知文本(WKT)中的标签geography::STGeomFro是 无效。有效标签包括点、线串、多边形、多点、, 多列线、多边形、几何集合、循环字符串、, COMPOUNDCURVE、CURVEPOLYGON和FULLGLOBE(仅限地理数据类型) 从SSMS,

对python来说是全新的,我喜欢它,我想这可能是一个简单的问题。
我目前正在的帮助下,通过Python脚本将点插入SQL Server 2008

这一切都很好。 我还需要将这些坐标插入一个字段(称为geog)

这将引发以下异常:

输入已知文本(WKT)中的标签geography::STGeomFro是 无效。有效标签包括点、线串、多边形、多点、, 多列线、多边形、几何集合、循环字符串、, COMPOUNDCURVE、CURVEPOLYGON和FULLGLOBE(仅限地理数据类型)

从SSMS,我可以在表上运行insert语句来插入一个点

USE [nosde]
INSERT INTO tweets (geog) 
    VALUES(
        geography::STGeomFromText(
        'POINT(55.9271035250276 -3.29431266523898)',4326))
如果您需要更多详细信息,请在评论中告诉我


有几个问题-首先,您以错误的顺序提供坐标-STPointFromText()方法要求首先是经度,然后是纬度

其次,使用Point()方法可能比使用STPointFromText()方法更容易,因为STPointFromText()方法不需要任何字符串操作,只需直接提供两个数字坐标参数

但是,从错误消息中可以看出,您正在发送的值正试图被解析为WKT字符串。如果是这种情况,那么无论如何,您都不希望在末尾有额外的geography::stgeomefromtext和SRID——这些都是假定的。因此,试着提供:

geog_type = "'POINT(%s %s)'" % (lon, lat)

cursor.execute("INSERT INTO table (field1, x, y, geog) VALUES(%s, %s, %s, %s)", 
(var1 , lat, lon, geog_type))

我不确定您是否需要在第一行中添加额外的单引号,但目前还没有测试系统。

这是完整的错误消息吗?如果是这样的话,geog_类型在执行的SQL中是否被截断,因为错误是抱怨“geography::STGeomFro”,而不是我刚才提到的“geography::STGeomFromText”,并且字符串是正确的,所以不确定它是否在其他地方被截断。
USE [nosde]
INSERT INTO tweets (geog) 
    VALUES(
        geography::STGeomFromText(
        'POINT(55.9271035250276 -3.29431266523898)',4326))
geog_type = "'POINT(%s %s)'" % (lon, lat)

cursor.execute("INSERT INTO table (field1, x, y, geog) VALUES(%s, %s, %s, %s)", 
(var1 , lat, lon, geog_type))