gpt4 book ai didi

python - cx_Oracle 中的用户输入变量?

转载 作者:太空狗 更新时间:2023-10-30 00:45:54 26 4
gpt4 key购买 nike

我正在使用 cx_Oracle 访问我们的数据库。我希望用户能够输入电台 ID,例如:

stationID=(无论用户在提示时输入什么)

cursor.execute('''select cruise, station, stratum
from union_fscs_svsta
where station=stationID
order by cruise''')

因为语句需要是一个字符串,我如何合并一个用户定义的变量?

最佳答案

如何做到:

id = raw_input("Enter the Station ID")
query = "select foo from bar where station={station_id}"
cursor.execute(query.format(station_id=id))

如果有人输入恶意的sql字符串,就会被执行。

不是使用 python 来格式化字符串,而是让数据库后端为您处理。具体如何执行此操作取决于您使用的数据库。我认为(?)这对于 Oracle 是正确的,但我无法对其进行测试。一些数据库使用不同的字符(例如,在 SQLite 中,? 而不是 %s)。

id = raw_input("Enter the Station ID")
query = "select foo from bar where station=%s"
cursor.execute(query, [id])

编辑:显然,cx_Oracle 默认为“已命名”paramstyle(您可以通过查看cx_Oracle.paramstyle 来检查这一点。 ).在那种情况下,你会做这样的事情:

query = "select foo from bar where station=:station_id"
cursor.execute(query, station_id=id)

关于python - cx_Oracle 中的用户输入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13650632/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com