我正在尝试执行以下脚本。但是我既没有得到预期的结果,也没有收到错误消息,也无法弄清楚我在哪里做错了。
import pyodbc
cnxn = pyodbc.connect("Driver={SQL Server Native Client 11.0};"
"Server=mySRVERNAME;"
"Database=MYDB;"
"uid=sa;pwd=MYPWD;"
"Trusted_Connection=yes;")
cursor = cnxn.cursor()
cursor.execute('select DISTINCT firstname,lastname,coalesce(middlename,\' \') as middlename from Person.Person')
for row in cursor:
print('row = %r' % (row,))
有什么想法吗?任何帮助表示赞赏:)
答案 0 :(得分:4)
您必须与光标一起使用访存方法。例如
for row in cursor.fetchall():
print('row = %r' % (row,))
编辑:
fetchall函数返回列表中所有剩余的行。
If there are no rows, an empty list is returned.
If there are a lot of rows, *this will use a lot of memory.*
未读取的行由数据库驱动程序以紧凑格式存储,并且通常从数据库服务器批量发送。
一次只读取所需的行将节省大量内存 。
如果我们要一次处理一行,我们可以将光标本身用作插入器 而且我们可以简化它,因为cursor.execute()总是返回一个游标:
for row in cursor.execute("select bla, anotherbla from blabla"):
print row.bla, row.anotherbla