【发布时间】:2021-01-13 03:49:56
【问题描述】:
我正在处理 Django orm 不支持的遗留数据源和驱动程序。我只能通过 pyodbc 使用他们专有的 odbc 驱动程序提交查询。我的解决方法是通过模型管理器的 pyodbc 提交自定义 sql。该技术(受 Django 文档启发)返回一个列表,而不是一个查询集。在我使用需要查询集的包之前,这很有效。
如何将结果列表转换为查询集?有没有办法将结果注入查询集中?
class MyManager(models.Manager):
def getdata(self):
con_string = 'DSN=myOdbcDsn;UID=id;PWD=pass'
conn=pyodbc.connect(con_string)
cursor=conn.cursor()
result_list = []
try:
sql = "select distinct coalesce(WORKCENTER_GROUP, 'na') workcenterGroup, WORKCENTER_CODE workcenterCode FROM Workcenter"
cursor.execute(sql)
for row in cursor.fetchall():
p = self.model(workcenterGroup=row[0], workcenterCode=row[1])
result_list.append(p)
except pyodbc.Error as ex:
print("----------------ERROR %s: %s" % (ex.args[0], ex.args[1]))
conn.close()
return result_list
class ProdTrends2(models.Model):
workcenterGroup=models.CharField("Group", max_length=100)
workcenterCode=models.CharField("Code", max_length=100)
objects=MyManager()
【问题讨论】:
-
可以分享一下型号代码吗?
-
已更新模型
标签: django django-models django-queryset