通过Model

时间:2019-10-29 00:40:30

标签: python sql pyodbc

我正在使用Python和pyodbc从SQL Server中提取数据,将其放入列表中,然后打印该列表。当我手动输入所有内容时,它工作正常。但是我正在尝试使用模型来清理代码,并最终使所有内容都变得非常用户友好。

这是我的Main文件:

import Models

cursor = Models.dbConnect()
states = Models.dbSelect(cursor, "State")

print(states)

这是我的Models文件

import pyodbc


def dbConnect(driver="ODBC Driver 17 for SQL Server", server="serverName", database="dbName"):
    cnxn = pyodbc.connect("Driver={" + driver + "};"
                    "Server=" + server + ";"
                    "Database=" + database + ";"
                    "Trusted_Connection=yes;")
    cursor = cnxn.cursor()
    return cursor

def dbSelect(cursor, Column="*", Table="States", Rest=""):
    cursor.execute('SELECT ' + Column + ' FROM ' + Table + ' ' + Rest)
    results = []
    for row in cursor:
        results.append(row)
    return results

这将返回以下混乱的结果

[('Alabama', ), ('Alaska', ), ('Arizona', ), etc]

我可以通过手动输入要尝试这样调用的特定列来轻松清理

for row in cursor:
    results.append(row.State)

返回以下结果

 ['Alabama', 'Alaska', 'Arizona', etc]

当我只使用“列”时,它会崩溃,因为行对象没有列属性。

for row in cursor:
    results.append(row.Column)

我只需要在Main文件中输入所需的列,但是我尝试的所有操作都迫使我手动在Main和{{ 1}}文件,或处理混乱的结果。

0 个答案:

没有答案