在 python 中存储 sql 结果变量
store sql result in a variable in python
执行 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()
您应该使用迭代器而不是 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()
简而言之,这就是您正在做的事情。
row = c.ex...
row = c.fe..
row = c.fe...
在编程中,这叫做给变量赋值。
简而言之,行是容器,您要多次替换它。
我们暂时忽略优化,只进行基础操作。
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
的上下文句柄,它会在您完成代码后自动关闭连接(不留下任何打开的连接,这可能是个问题),其次,直接迭代 c.fetchall()
如果函数支持迭代,可能会更快,在以后的版本中可能会支持。
这是一个您只需将所有结果添加到一个 hughe 字符串中(例如,用于转储到文件等)。 注意 如果结果很多,这可能会填满您的内存,在这种情况下将其顺序存储到文件中会更好,因此您通常出于内存原因单独处理每个数据库行.
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'")
string_result = ''
for row in c.fetchall():
string_result = row + '\n'
执行 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()
您应该使用迭代器而不是 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()
简而言之,这就是您正在做的事情。
row = c.ex...
row = c.fe..
row = c.fe...
在编程中,这叫做给变量赋值。 简而言之,行是容器,您要多次替换它。
我们暂时忽略优化,只进行基础操作。
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
的上下文句柄,它会在您完成代码后自动关闭连接(不留下任何打开的连接,这可能是个问题),其次,直接迭代 c.fetchall()
如果函数支持迭代,可能会更快,在以后的版本中可能会支持。
这是一个您只需将所有结果添加到一个 hughe 字符串中(例如,用于转储到文件等)。 注意 如果结果很多,这可能会填满您的内存,在这种情况下将其顺序存储到文件中会更好,因此您通常出于内存原因单独处理每个数据库行.
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'")
string_result = ''
for row in c.fetchall():
string_result = row + '\n'