configuring ODBC DSN with a python script

T

test test

Hello Python user,



I've read your mail and analysed the problem. The testing i've done was with windows xp pro.



First thin i have seen, was that you tried to open an existing registry key with wreg.OpenKey. You must only open only a key with with this command i've you want to read the key, i've you want to write to the key always use wreg.CreateKey.



Below here you will find the most part of youre send code. The code in red is new code, en de code in bleu is changed code.



Hope you can use this code.



Sincerly,



C.R. Groenveld



The Netherlands



 



 



#import mx.ODBC.Windows



import _winreg as wreg



class access_interface:



def __init__(self):



self.dsn_name="test2"



self.dbq="C:\\prog\\ontwikkel\\test\\db1.mdb"



self.driver_path="C:\\WINDOWS\\System32\\odbcjt32.dll"



self.driver_id=25



self.fil="MS Access;"



self.safe_transactions=0



self.uid=""







self.implicit_commit_sync=""



self.max_buffer_size=2048



self.page_timeout=5



self.threads=3



self.user_commit_sync="Yes"







self.dsn_reg_key=None



self.dsn_keyname="Software\\ODBC\\ODBC.INI\\%s" %(self.dsn_name)







self.engine_reg_key=None



self.engine_keyname="Software\\ODBC\\ODBC.INI\\%s\\Engines\\Jet" %(self.dsn_name)







self.ODBC_reg_key=None



self.ODBC_keyname="Software\\ODBC\\ODBC.INI\\ODBC Data Sources"



print self.ODBC_keyname







def createDSN(self):



# try:



# self.dsn_reg_key=wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,self.dsn_keyname,1)



# except:



self.dsn_reg_key=wreg.CreateKey(wreg.HKEY_LOCAL_MACHINE,self.dsn_keyname)



# try:



# self.engine_reg_key=wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,self.engine_keyname,1)



# except:



self.engine_reg_key=wreg.CreateKey(wreg.HKEY_LOCAL_MACHINE,self.engine_keyname)



# try:



# self.ODBC_reg_key=wreg.OpenKey(wreg.HKEY_LOCAL_MACHINE,self.ODBC_keyname,1)



# except:



self.ODBC_reg_key=wreg.CreateKey(wreg.HKEY_LOCAL_MACHINE,self.ODBC_keyname)







if self.dsn_reg_key!=None and self.engine_reg_key!=None and self.ODBC_reg_key!=None:



self.setRegSZ(self.dsn_reg_key,"DBQ",self.dbq)



self.setRegSZ(self.dsn_reg_key,"Driver",self.driver_path)



self.setRegDWORD(self.dsn_reg_key,"DriverId",self.driver_id)



self.setRegSZ(self.dsn_reg_key,"FIL",self.fil)



self.setRegDWORD(self.dsn_reg_key,"SafeTransactions",self.safe_transactions)



self.setRegSZ(self.dsn_reg_key,"UID",self.uid)



wreg.CloseKey(self.dsn_reg_key)







self.setRegSZ(self.engine_reg_key,"ImplicitCommitSync",self.implicit_commit_sync)



self.setRegDWORD(self.engine_reg_key,"MaxBufferSize",self.max_buffer_size)



self.setRegDWORD(self.engine_reg_key,"PageTimeout",self.page_timeout)



self.setRegDWORD(self.engine_reg_key,"Threads",self.threads)



self.setRegSZ(self.engine_reg_key,"UserCommitSync",self.user_commit_sync)



wreg.CloseKey(self.engine_reg_key)



self.setRegSZ(self.ODBC_reg_key,self.dsn_name, "Microsoft Access Driver (*.mdb)")



wreg.CloseKey(self.ODBC_reg_key)







def setRegSZ(self,reg_key,reg_name,reg_value):



print reg_key



print reg_name



print reg_value



wreg.SetValueEx(reg_key,reg_name,0,wreg.REG_SZ,reg_value)







def setRegDWORD(self,reg_key,reg_name,reg_value):



wreg.SetValueEx(reg_key,reg_name,0,wreg.REG_DWORD,reg_value)







def getCursor(self):



db=mx.ODBC.Windows.DriverConnect('DSN=test2;UID=user;PWD=passwd')



c=db.cursor()



return c







def getRows(self):



c=self.getCursor()



c.execute('select * from puke')



mx.ODBC.print_resultset(c)







if __name__=="__main__":



ai=access_interface()



ai.createDSN()



ai.getRows()




Ontvang je Hotmail & Messenger berichten op je mobiele telefoon met Hotmail SMS klik hier
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top