gpt4 book ai didi

python - 如何将变量添加到 SQL 查询?

转载 作者:行者123 更新时间:2023-11-28 22:49:21 24 4
gpt4 key购买 nike

我正在尝试将 argv[0] 作为变量添加到下面的 SQL 查询中并遇到下面的编译错误,修复此问题的语法是什么?

#!/usr/bin/python
import pypyodbc as pyodbc
from sys import argv
component_id=argv[0]
server_name='odsdb.company.com'
database_name='ODS'

cnx = pyodbc.connect("DRIVER={SQL Server};SERVER="+server_name+";DATABASE="+database_name)
db_cursor=cnx.cursor()
SQL = 'SELECT Top 1 cr.ReleaseLabel ' + \
'FROM [ODS].[v000001].[ComponentRevisions] cr ' + \
'WHERE cr.ComponentId=' + component_id + \
'ORDER BY cr.CreatedOn DESC'
resp_rows_obj=db_cursor.execute(SQL)
print '('+', '.join([column_heading_tuple[0] for column_heading_tuple in resp_rows_obj.description])+')'
for row in resp_rows_obj:
print row

错误:-

pypyodbc.ProgrammingError: (u'42000', u"[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'BY'.")

最佳答案

不要使用字符串插值。使用 SQL 参数;这些是查询中的占位符,您的数据库将在其中插入值:

SQL = '''\
SELECT Top 1 cr.ReleaseLabel
FROM [ODS].[v000001].[ComponentRevisions] cr
WHERE cr.ComponentId = ?
ORDER BY cr.CreatedOn DESC
'''
resp_rows_obj = db_cursor.execute(SQL, (component_id,))

? 占位符的值来自 cursor.execute() 函数的第二个参数,一个值序列。这里只有一个值,所以我使用了一个单元素元组。

请注意,您可能需要 argv[1] argv[0];后者是脚本名称,而不是第一个参数。

关于python - 如何将变量添加到 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23922691/

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