问题我只想从我的数据库中获取我的view\u id列,但是我想要一些序列号作为我的第一个键。下面是我到目前为止所得到的任何帮助,将不胜感激!你知道吗
如果尝试将count设置为第一个键,则会出现语法错误:
import pyodbc
class ShopView(object):
def getViews(self):
conn = pyodbc.connect(r'DSN=mydb;UID=test;PWD=xxxxxxxxxxxxx')
sql = "SELECT DISTINCT view_id FROM [TEST].[dbo].[SHOP_VIEW]"
cursor = conn.cursor()
cursor.execute(sql)
count = 0
try:
return {'shop_views':
[dict(zip(count += 1, [column[0] for column in cursor.description], row))
for row in cursor.fetchall()]}
finally:
cursor.close()
conn.close()
我也尝试过这个,但是我得到了一个新的错误:ValueError: dictionary update sequence element #0 has length 3; 2 is required
try:
return {'shop_views':
[dict(zip([data[0] for data in str(cursor.rowcount)], [column[0] for column in cursor.description], row))
for row in cursor.fetchall()]}
finally:
cursor.close()
conn.close()
这就是现在的样子
{'shop_views': [{'view_id': 'ACTOB'}, {'view_id': 'BANDDIES'}, {'view_id': 'SpareNCLathe'}]}
下面是我想要的样子:
{'shop_views': [{'count': '1', 'view_id': 'ACTOB'}{'count': '2', 'view_id': 'BANDDIES'}, {'count': '3', 'view_id': 'SpareNCLathe'}]}
未测试(不适用于db和连接器),但:
应该符合你的预期结果。你知道吗
从文件中:
请注意,我是直接传递
cursor
,在大多数dbapi实现中,游标本身就是一个iterable—一个惰性的游标,因此当您只想在.fetchall()
上迭代时,可以避免将整个resultset加载到内存中(这就是.fetchall()
)。如果得到TypeError: XXX object is not iterable
异常,则传递cursor.fetchall()
而不是cursor
(并联系pyodbc维护人员,让他们使cursor
可编辑)。你知道吗相关问题 更多 >
编程相关推荐