繁体   English   中英

SQL 查询 Python 变量

[英]SQL Query Python Variables

我正在尝试使用 python 变量进行 postgis 查询。 但是,当我执行以下查询时:

sql = """SELECT * FROM "12NM(LineGridExp)" WHERE "12NM(LineGridExp)".geom && ST_MakeEnvelope(?, ?, ?, ?, 4326)""",str(x0), str(y0), str(x1), str(y1)

TerrLine = gpd.GeoDataFrame.from_postgis(sql, connection, geom_col='geom')

我得到以下信息:

 Execution failed on sql '('SELECT * FROM "12NM(LineGridExp)" WHERE "12NM(LineGridExp)".geom && ST_MakeEnvelope(%s, %s, %s, %s, 4326)', -1.400993559416539)': argument 1 must be a string or unicode object: got tuple instead

我一定是遗漏了一些小东西,但我似乎无法让它发挥作用。

x0, y0, x1, y1 都是浮点数。

任何帮助将不胜感激,

汤姆

您不是将变量替换为 SQL 字符串,而是将sql设置为包含 SQL 字符串后跟变量值的元组。

假设 PostGIS 接口实现了标准cursor接口,您应该将变量作为元组参数提供给cursor.execute()函数。

sql = """SELECT * FROM "12NM(LineGridExp)" WHERE "12NM(LineGridExp)".geom && ST_MakeEnvelope(?, ?, ?, ?, 4326)"""
cur.execute(sql, (x0, y0, x1, y1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM