gpt4 book ai didi

python - 在 python 中使用 pyodbc 获取 MSSQL 表列名

转载 作者:行者123 更新时间:2023-11-28 22:39:31 25 4
gpt4 key购买 nike

我正在尝试使用 pyodbc 获取 mssql 表列名,但收到一条错误消息

ProgrammingError: No results.  Previous SQL was not a query.

这是我的代码:

class get_Fields:
def GET(self,r):
web.header('Access-Control-Allow-Origin', '*')
web.header('Access-Control-Allow-Credentials', 'true')
fields = []
datasetname = web.input().datasetName
tablename = web.input().tableName
cnxn = pyodbc.connect(connection_string)
cursor = cnxn.cursor()
query = "USE" + "[" +datasetname+ "]" + "SELECT COLUMN_NAME,* FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = " + "'"+ tablename + "'"
cursor.execute(query)
DF = DataFrame(cursor.fetchall())
columns = [column[0] for column in cursor.description]
return json.dumps(columns)

如何解决?

最佳答案

您可以通过使用 pyodbc 的一些内置方法来避免这种情况。例如,而不是:

    query =  "USE" + "[" +datasetname+ "]" + "SELECT COLUMN_NAME,* FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = " + "'"+ tablename + "'"
cursor.execute(query)
DF = DataFrame(cursor.fetchall())

尝试:

    column_data = cursor.columns(table=tablename, catalog=datasetname, schema='dbo').fetchall()
print(column_data)

这将返回列名(和其他列元数据)。我相信列名是每行的第四个元素。这也消除了对 SQL 注入(inject)的非常有效的担忧。然后,您可以了解如何根据生成的数据构建您的 DataFrame

祝你好运!

关于python - 在 python 中使用 pyodbc 获取 MSSQL 表列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34678006/

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