将sql结果存储在python中的变量中

时间:2015-03-11 08:34:41

标签: python sql-server-2005

执行select语句后,我需要帮助将查询结果存储在变量中。这是我下面的代码..没有错误,但我需要帮助将其存储在PYTHON中的变量中。我正在使用pymssql和python 2.7.9。提前谢谢

conn = pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython')
    c = conn.cursor()
    row = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
    row = c.fetchall()
    while row:
        print row
        row = c.fetchall()

2 个答案:

答案 0 :(得分:1)

删除你的代码,这就是你正在做的事情。

row = c.ex...
row = c.fe..
    row = c.fe...

在编程中,这称为为变量赋值。 简而言之,行就是容器,你要多次重复它。

我们现在将忽略optmizations并且只是基础知识。

conn = pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython')
c = conn.cursor()
row = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
rows = c.fetchall()
for row in rows:
    print(row)

首先,c.fetchall()检索查询中的所有结果,我们会将它们放在名为rows的变量中。然后我们通过for row in rows创建一个迭代器(你尝试用while循环做的事情)。然后我们只打印每一行。

你应该怎么做

这称为上下文管理器。

with pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython') as conn:
    c = conn.cursor()
    rows = c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")
    for row in c.fetchall():
        print(row)

这会打开一个名为conn的上下文句柄,它会在您完成代码时自动关闭连接(不会留下任何可能存在问题的打开连接),其次是直接在{{1如果函数支持迭代,可能会更快,它可能会在以后的版本中使用。


这里只是将所有结果添加到hughe字符串中(例如,用于转储到文件等)。 注意如果结果很多,这可能会填满你的内存,在这种情况下按顺序将它存储到文件会更好,因此为什么你出于内存原因通常单独处理每个数据库行。

c.fetchall()

答案 1 :(得分:0)

你应该使用迭代器而不是while循环。

conn = pymssql.connect(host='localhost', user='xx', password='xx', database='dbpython')
c = conn.cursor()
c.execute("select fid, fname, lname, contact from tblcontact where fname='maiji'")

for row in c:
    print(row)

c.close()