如何在django/python中使用win32com调度?
我正在尝试将我的django应用程序与PIOLEDB连接,但Dispatch引发下面的异常这是我的代码,请指导我做错了什么。我是PI系统的新手如何在django/python中使用win32com调度?,python,django,win32com,Python,Django,Win32com,我正在尝试将我的django应用程序与PIOLEDB连接,但Dispatch引发下面的异常这是我的代码,请指导我做错了什么。我是PI系统的新手 oConn = Dispatch('ADODB.Connection') oRS = Dispatch('ADODB.RecordSet') #oConn.ConnectionString = "Provider=PIOLEDB;Data Source=localhost;User ID=piadmin;database=sparktest" oCon
oConn = Dispatch('ADODB.Connection')
oRS = Dispatch('ADODB.RecordSet')
#oConn.ConnectionString = "Provider=PIOLEDB;Data Source=localhost;User ID=piadmin;database=sparktest"
oConn.ConnectionString = "Provider=PIOLEDB; Data Source=pi-spark; Integrated Security=True"
if oConn.State == 0:
print "We've connected to the database."
# db_cmd = """SELECT time,tag,value FROM piarchive..picomp2 where tag like 'BOP:692-RTU-9001W'"""
db_cmd = """SELECT * FROM piarchive..picomp2 WHERE tag = 'SEC.CT06.SG.CT6-GEN-CE-SEI-Y.V.none.1X.Ycoord' and time > '11/1/2014 2:42 PM' and time < '11/1/2014 3:47 PM'"""
#db_cmd = """SELECT * FROM piarchive..picomp2 WHERE tag = 'SEC.CT06.SG.CT6-TRB-EX-SEI-5.V.none.2xMagnitude'"""
# db_cmd = """SELECT * FROM pipoint"""1
oRS.ActiveConnection = "Provider=PIOLEDB; Data Source=localhost; Integrated Security=True"
oRS.Open(db_cmd)
while not oRS.EOF:
#print oRS.Fields.Item("tag").Value # Ability to print by a field name
row=""
for i in range(0,oRS.Fields.Count):
row+=" "+str(oRS.Fields.Item(i).Value)
# print oRS.Fields.Item(0).Value # Ability to print by a field location
print row
oRS.MoveNext()
oRS.Close()
oRS = None
else:
print "Not connected"
#if oConn.State == 0:
# oConn.Close()
oConn = None
@Sayse的答案是正确的,但他们没有告诉您如何;-)。我们开始: 加 在您的
调度
代码前。有关更多详细信息,请参阅和
例如,我使用outlook从Django发送(或保存)电子邮件的代码如下所示:
def send_mail_via_outlook(address, mailtext):
import pythoncom
pythoncom.CoInitialize() #@UndefinedVariable
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = address
mail.Subject = "My Subject"
mail.body = mailtext
# mail.send #send e-mail immediately
mail.save() #save e-mail in draft folder.
看起来你需要调用
CoInitialize
如果我把它放在python文件中并从terminalit执行,那么这段代码运行得很好。这段代码很长时间以来一直困扰着我,而你的答案适合我!非常感谢!
import pythoncom
pythoncom.CoInitialize()
def send_mail_via_outlook(address, mailtext):
import pythoncom
pythoncom.CoInitialize() #@UndefinedVariable
outlook = win32.Dispatch('outlook.application')
mail = outlook.CreateItem(0)
mail.To = address
mail.Subject = "My Subject"
mail.body = mailtext
# mail.send #send e-mail immediately
mail.save() #save e-mail in draft folder.