我是Python的新手,我很难从MSSQL的列中将值读取到列表中。输出的每个值都有一个文本u',并且encoding函数无法删除相同的值

例如,如果列名称='城市'和表名称=“世界城市”-当执行所附代码时,得到的输出如下

实际输出:[(u'chicago',),(u'dallas',),(u'kansas',)]
预期产出:[芝加哥,达拉斯,堪萨斯州]

import pyodbc
def colread(columnname,tablename,listname):
    cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
                  "Server= ABC;"
                  "Database=City;"
                  "Trusted_Connection=yes;")

    cursor = cnxn.cursor()
    sql = "SELECT " + columnname + " FROM " + tablename
    cursor.execute(sql)
    data = cursor.fetchall()
    columnlist = []
    listname = []

    for row in data:
       c = row
       columnlist.append(c)
    columnlist = [item for item in columnlist if item]
    listname = columnlist
    listname = [item.encode('ascii','ignore') for item in columnlist]
    cnxn.close()
    return listname
 CITYDB = colread('Cities','World_City','citydb')
 print  CITYDB[0:10]


注意:我了解了有关SQL注入问题的信息,一旦解决此问题,便会解决该问题。

最佳答案

您的数据以一元组为单位。您应该能够做到这一点,从而以所需的格式获取数据:

columnlist = [item[0] for item in columnlist if item]


如果您对程序信任输入,则可以在执行操作时动态提供列和表名。

08-07 18:42