How to change pymssql timeout value?

2005-08-07 Thread saqib


I have a query that is running on a mssql DB that takes about 15
minutes when run "directly"; IE: thru MS SQL Query Analyzer. I know, it
sucks. I'm trying to fix it.

But in the meantime, I have a python process which connects to the DB
using pymssql. This process runs the aformentioned query... but fails
because the query times out after approx 30 seconds. Is there anyway to
change/set the timeout setting on a pymssql DB connection?? I poked
around a bit in the pymssql module but nothing was obvious to me.

-Saqib

-- 
http://mail.python.org/mailman/listinfo/python-list


Inexplicable behavior in simple example of a set in a class

2011-07-02 Thread Saqib Ali


I have written two EXTREMELY simple python classes. One class
(myClass1) contains a data attribute (myNum) that contains an integer.
The other class (myClass2) contains a data attribute (mySet) that
contains a set.

I instantiate 2 instances of myClass1 (a & b). I then change the value
of a.myNum. It works as expected.

Then I instantiate 2 instances of myClass2 (c & d). I then change the
value of c.mySet. Bizarrely changing the value of c.mySet also affects
the value of d.mySet which I haven't touched at all!?!?! Can someone
explain this very strange behavior to me? I can't understand it for
the life of me.

Please see below the source code as well as the output.


-- SOURCE CODE --
import sets

class myClass1:

myNum = 9

def clearNum(self):
self.myNum = 0

def __str__(self):
  return str(self.myNum)

class myClass2:

mySet = sets.Set(range(1,10))

def clearSet(self):
self.mySet.clear()

def __str__(self):
  return str(len(self.mySet))

if __name__ == "__main__":

# Experiment 1. Modifying values of member integers in two
different instances of a class
# Works as expected.
a = myClass1()
b = myClass1()
print "a = %s" % str(a)
print "b = %s" % str(b)
print "a.clearNum()"
a.clearNum()
print "a = %s" % str(a)
print "b = %s\n\n\n" % str(b)



# Experiment 2. Modifying values of member sets in two different
instances of a class
# Fails Unexplicably. d is not being modified. Yet calling
c.clearSet() seems to change d.mySet's value
c = myClass2()
d = myClass2()
print "c = %s" % str(c)
print "d = %s" % str(d)
print "c.clearSet()"
c.clearSet()
print "c = %s" % str(c)
print "d = %s" % str(d)




-- OUTPUT --
> python.exe myProg.py

a = 9
b = 9
a.clearNum()
a = 0
b = 9



c = 9
d = 9
c.clearSet()
c = 0
d = 0
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Inexplicable behavior in simple example of a set in a class

2011-07-02 Thread Saqib Ali
> Instance variables are properly created in the __init__()
> initializer method, *not* directly in the class body.
>
> Your class would be correctly rewritten as:
>
> class MyClass2(object):
>     def __init__(self):
>         self.mySet = sets.Set(range(1,10))
>
>     def clearSet(self):
> # ...rest same as before...


Thanks Chris. That was certainly very helpful!!

So just out of curiosity, why does it work as I had expected when the
member contains an integer, but not when the member contains a set?
-- 
http://mail.python.org/mailman/listinfo/python-list


Need help with really elementary pexpect fragment

2011-12-19 Thread Saqib Ali

I want to write a pexpect script that simply cd's into a directory ("~/
install") and then runs a command from there. It should be so easy.
But even my cd command is failing. Can't figure out what the problem
is. The command line prompt is "[my machine name here] % "

Here is the code fragment:

print "Spawning Expect"
p = pexpect.spawn ('/bin/tcsh',)

print "Sending cd command"
i = p.expect([pexpect.TIMEOUT, "%",])
assert i != 0, "Time-Out exiting"
p.sendline("cd ~/install")

Here is the output:

Spawning Expect
Sending cd command
Time-Out exiting


How could I be screwing something so simple up??
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Need help with really elementary pexpect fragment

2011-12-20 Thread Saqib Ali
Oops! Good call.
Thank you. You pointed out my mistake.


- Saqib




On Tue, Dec 20, 2011 at 12:31 AM, Nick Dokos  wrote:

> Saqib Ali  wrote:
>
> >
> > I want to write a pexpect script that simply cd's into a directory ("~/
> > install") and then runs a command from there. It should be so easy.
> > But even my cd command is failing. Can't figure out what the problem
> > is. The command line prompt is "[my machine name here] % "
> >
> > Here is the code fragment:
> >
> > print "Spawning Expect"
> > p = pexpect.spawn ('/bin/tcsh',)
> >
>
> If you execute /bin/tcsh by hand, do you get a "%" prompt?
>
> Nick
>
> > print "Sending cd command"
> > i = p.expect([pexpect.TIMEOUT, "%",])
> > assert i != 0, "Time-Out exiting"
> > p.sendline("cd ~/install")
> >
> > Here is the output:
> >
> > Spawning Expect
> > Sending cd command
> > Time-Out exiting
> >
> >
> > How could I be screwing something so simple up??
> > --
> > http://mail.python.org/mailman/listinfo/python-list
> >
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Can I get use pexpect to control this process?

2011-12-21 Thread Saqib Ali

I have a program X that constantly spews output, hundreds of lines per
minute.
X is not an interactive program. IE: it doesn't take any user input.
It just produces a lot of textual output to STDOUT.

I would like to save the output produced by X into a different file
every 5 seconds regardless of the actual content. I want one file to
contain the output from seconds 0-5, another file should contain 6-10,
etc. etc.

Can I do this with pexpect? I'm not sure I can because the "before"
argument gives me EVERYTHING upto the most recent match. What I really
need is something that will give me what was produced between the last
2 calls to pexpect.expect().
-- 
http://mail.python.org/mailman/listinfo/python-list


Can't I define a decorator in a separate file and import it?

2011-12-22 Thread Saqib Ali


I'm using this decorator to implement singleton class in python:

http://stackoverflow.com/posts/7346105/revisions

The strategy described above works if and only if the Singleton is
declared and defined in the same file. If it is defined in a different
file and I import that file, it doesn't work.

Why can't I import this Singleton decorator from a different file?
What's the best work around?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Can't I define a decorator in a separate file and import it?

2011-12-22 Thread Saqib Ali
MYCLASS.PY:

#!/usr/bin/env python
import os, sys, string, time, re, subprocess
import Singleton


@Singleton
class myClass:

def __init__(self):
print 'Constructing myClass'

def __del__(self):
print 'Destructing myClass'


SINGLETON.PY:


#!/usr/bin/env python
import os, sys, string, time, re, subprocess
import Singleton


@Singleton
class myClass:

def __init__(self):
print 'Constructing myClass'

def __del__(self):
print 'Destructing myClass'

TRACEBACK:

>>> import myClass
Traceback (most recent call last):
  File "", line 1, in 
  File "myClass.py", line 6, in 
@Singleton
TypeError: 'module' object is not callable



- Saqib





>>
> Post the code, and the traceback.
>
> ~Ethan~
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Can't I define a decorator in a separate file and import it?

2011-12-22 Thread Saqib Ali
BTW Here is the traceback:

>>> import myClass
Traceback (most recent call last):
  File "", line 1, in 
  File "myClass.py", line 6, in 
@Singleton
TypeError: 'module' object is not callable



Here is Singleton.py:



class Singleton:

def __init__(self, decorated):
self._decorated = decorated

def Instance(self):
try:
return self._instance
except AttributeError:
self._instance = self._decorated()
return self._instance

def __call__(self):
raise TypeError(
'Singletons must be accessed through the `Instance`
method.')



Here is myClass.py:

#!/usr/bin/env python
import os, sys, string, time, re, subprocess
import Singleton


@Singleton
class myClass:

def __init__(self):
print 'Constructing myClass'

def __del__(self):
print 'Destructing myClass'
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Can't I define a decorator in a separate file and import it?

2011-12-22 Thread Saqib Ali
Thanks for pointing out the mistake!
Works.
- Saqib




On Thu, Dec 22, 2011 at 4:31 PM, Ethan Furman  wrote:

> Saqib Ali wrote:
>
>> MYCLASS.PY:
>>
>> #!/usr/bin/env python
>> import os, sys, string, time, re, subprocess
>> import Singleton
>>
>
> This should be 'from Singleton import Singleton'
>
>
>
>  @Singleton
>> class myClass:
>>def __init__(self):
>>print 'Constructing myClass'
>>
>
> At this point, the *instance* of myClass has already been constructed and
> it is now being initialized.  The __new__ method is where the instance is
> actually created.
>
>
>
>>def __del__(self):
>>print 'Destructing myClass'
>>
>>
>>  > class Singleton:
> >
> > def __init__(self, decorated):
> > self._decorated = decorated
> >
> > def Instance(self):
> > try:
> > return self._instance
> > except AttributeError:
> > self._instance = self._decorated()
> > return self._instance
> >
> > def __call__(self):
> > raise TypeError(
> > 'Singletons must be accessed through the `Instance`
> > method.')
>
>
> ~Ethan~
>
-- 
http://mail.python.org/mailman/listinfo/python-list


Changing the system clock with pexpect confuses pexpect!

2011-12-26 Thread Saqib Ali

See my code below.

I'm controlling a shell logged in as root with pexpect.

The class below has a method (startProc) which spawns a shell and
keeps it alive until told to destroy it (stopProc).

The other 2 methods in this class allow me to change the system clock
and to get the IP Address of this machine.

They all work fine except when I advance the system clock, and
then try to get the IP Address.
In that case, I get an exception because pexpect incorrectly thinks
the output it is getting from ifconfig is invalid. But it is not.
Pexpect is just confused. This doesn't happen when I move the clock
backwards. It only happens when I move the clock forward.

I believe what is going on is that internally pexpect uses the system
clock to keep track of when it receives data from spawned processes.
When I mess with the clock, that messes up the internal workings of
pexpect.

Any suggestions what I should do? I have numerous concurrent pexpect
processes running when I modify the clock. Is there anyway to prevent
them all from getting totally screwed up??

-


#!/usr/bin/env python
import pexpect, os, time, datetime, re

def reportPrint(string):
print string

def reportAssert(condition, string)
if condition == False:
print string
raise Exception


class rootManager:

rootProc = None
rootPrompt = "] % "
myPrompt = "] % "

def __init__(self):
pass




def startProc(self):
if self.rootProc != None:
reportPrint("\t\t- Root Process is already created")
else:
self.rootProc = pexpect.spawn ('/bin/tcsh',)
i = self.rootProc.expect([pexpect.TIMEOUT,
self.myPrompt,])
reportAssert(i != 0, "Time-Out exiting")

reportPrint("\t\t- Sending su")
self.rootProc.sendline("su")
i = self.rootProc.expect([pexpect.TIMEOUT, "Password: ",])
reportAssert(i != 0, "Time-Out exiting")

reportPrint("\t\t- Sending Password")
self.rootProc.sendline(ROOT_PASSWORD)
i = self.rootProc.expect([pexpect.TIMEOUT,
self.rootPrompt,])
reportAssert(i != 0, "Time-Out exiting")

reportPrint("\t\t- Root Process created")


def getIPAddr(self):
reportAssert(self.rootProc != None, "No active Root Process!")

reportPrint("\t\t- Sending ifconfig -a")
self.rootProc.sendline("ifconfig -a")
i = self.rootProc.expect([pexpect.TIMEOUT, self.rootPrompt,])
reportAssert(i != 0, "Time-Out exiting")

outputTxt = self.rootProc.before
ipList = [i for i in re.compile("(?<=inet )\d{1,3}\.\d{1,3}\.
\d{1,3}\.\d{1,3}").findall(outputTxt) if i != "127.0.0.1"]
reportAssert(len(ipList) == 1, "Cannot determine IP Address
from 'ifconfig -a': \n%s" % outputTxt)
return ipList[0]


def changeClock(self, secondsDelta):
reportAssert(self.rootProc != None, "No active Root Process!")

newTime = datetime.datetime.now() +
datetime.timedelta(seconds=secondsDelta)
dateStr = "%02d%02d%02d%02d%s" % (newTime.month, newTime.day,
newTime.hour, newTime.minute, str(newTime.year)[-2:])
reportPrint("\t\t- Sending 'date %s' command" % dateStr)
self.rootProc.sendline("date %s" % dateStr)
#Remember, by changing the clock, you are confusing pexpect's
timeout measurement!
# so ignore timeouts in this case
i = self.rootProc.expect([pexpect.TIMEOUT,
self.rootPrompt,],)






def stopProc(self):
if self.rootProc == None:
reportPrint("\t\t- Root Process is already destroyed")
else:

reportPrint("\t\t- Sending exit command")
rootProc.sendline("exit")
i = rootProc.expect([pexpect.TIMEOUT, self.myPrompt])
reportAssert(i != 0, "Time-Out exiting")

reportPrint("\t\t- Sending exit command")
rootProc.sendline("exit")
i = rootProc.expect([pexpect.TIMEOUT, pexpect.EOF])
reportAssert(i != 0, "Time-Out exiting")
self.rootProc.close()
self.rootProc = None
reportPrint("\t\t- Root Process Destroyed")



-- 
http://mail.python.org/mailman/listinfo/python-list


Problem while doing a cat on a tabbed file with pexpect

2012-01-15 Thread Saqib Ali

I am using Solaris 10, python 2.6.2, pexpect 2.4

I create a file called me.txt which contains the letters "A", "B", "C"
on the same line separated by tabs.

My shell prompt is "% "

I then do the following in the python shell:


>>> import pexpect
>>> x = pexpect.spawn("/bin/tcsh")
>>> x.sendline("cat me.txt")
11
>>> x.expect([pexpect.TIMEOUT, "% "])
1
>>> x.before
'cat me.txt\r\r\nA   B   C\r\n'
>>> x.before.split("\t")
['cat me.txt\r\r\nA   B   C\r\n']



Now, clearly the file contains tabs. But when I cat it through expect,
and collect cat's output, those tabs have been converted to spaces.
But I need the tabs!

Can anyone explain this phenomenon or suggest how I can fix it?
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Problem while doing a cat on a tabbed file with pexpect

2012-01-15 Thread Saqib Ali

Very good question. Let me explain why I'm not opening me.txt directly
in python with open.

The example I have posted is simplified for illustrative purpose. In
reality, I'm not doing pexpect.spawn("/bin/tcsh"). I'm doing
pexpect.spawn("ssh myuser@ipaddress"). Since I'm operating on a remote
system, I can't simply open the file in my own python context.


On Jan 15, 2:24 pm, Dennis Lee Bieber  wrote:
> On Sun, 15 Jan 2012 09:51:44 -0800 (PST), Saqib Ali
>
>  wrote:
> >Now, clearly the file contains tabs. But when I cat it through expect,
> >and collect cat's output, those tabs have been converted to spaces.
> >But I need the tabs!
>
> >Can anyone explain this phenomenon or suggest how I can fix it?
>
>         My question is:
>
>         WHY are you doing this?
>
>         Based upon the problem discription, as given, the solution would
> seem to be to just open the file IN Python -- whether you read the lines
> and use split() by hand, or pass the open file to the csv module for
> reading/parsing is up to you.
>
> -=-=-=-=-=-=-
> import csv
> import os
>
> TESTFILE = "Test.tsv"
>
> #create data file
> fout = open(TESTFILE, "w")
> for ln in [  "abc",
>             "defg",
>             "hijA"  ]:
>     fout.write("\t".join(list(ln)) + "\n")
> fout.close()
>
> #process tab-separated data
> fin = open(TESTFILE, "rb")
> rdr = csv.reader(fin, dialect="excel-tab")
> for rw in rdr:
>     print rw
>
> fin.close()
> del rdr
> os.remove(TESTFILE)
> -=-=-=-=-=-=-
> ['a', 'b', 'c']
> ['d', 'e', 'f', 'g']
> ['h', 'i', 'j', 'A']
> --
>         Wulfraed                 Dennis Lee Bieber         AF6VN
>         [email protected]    HTTP://wlfraed.home.netcom.com/

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Problem while doing a cat on a tabbed file with pexpect

2012-01-15 Thread Saqib Ali

The file me.txt does indeed contain tabs. I created it with vi.

>>> text = open("me.txt", "r").read()
>>> print "\t" in text
True


% od -c me.txt
000   A  \t   B  \t   C  \n
006


% ls -al me.txt
-rw-r--r--   1 myUsermyGroup   6 Jan 15 12:42 me.txt



On Jan 15, 6:40 pm, Cameron Simpson  wrote:
> On 15Jan2012 23:04, Steven D'Aprano  
> wrote:
> | On Sun, 15 Jan 2012 09:51:44 -0800, Saqib Ali wrote:
> | > I am using Solaris 10, python 2.6.2, pexpect 2.4
> | >
> | > I create a file called me.txt which contains the letters "A", "B", "C"
> | > on the same line separated by tabs.
> | [...]
> | > Now, clearly the file contains tabs.
> |
> | That is not clear at all. How do you know it contains tabs? How was the
> | file created in the first place?
> |
> | Try this:
> |
> | text = open('me.txt', 'r').read()
> | print '\t' in text
> |
> | My guess is that it will print False and that the file does not contain
> | tabs. Check your editor used to create the file.
>
> I was going to post an alternative theory but on more thought I think
> Steven is right here.
>
> What does:
>
>   od -c me.txt
>
> show you? TABs or multiple spaces?
>
> What does:
>
>   ls -ld me.txt
>
> tell you about the file size? Is it 6 bytes long (three letters, two
> TABs, one newline)?
>
> Steven hasn't been explicit about it, but some editors will write spaces when
> you type a TAB. I have configured mine to do so - it makes indentation more
> reliable for others. If I really need a TAB character I have a special
> finger contortion to get one, but the actual need is rare.
>
> So first check that the file really does contain TABs.
>
> Cheers,
> --
> Cameron Simpson  DoD#743http://www.cskk.ezoshosting.com/cs/
>
> Yes Officer, yes Officer, I will Officer. Thank you.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: ENMAC Mobile Phones, iPods EQ100 www.enmac.com.hk

2008-02-20 Thread Saqib Mehmood
On Jan 24, 1:43 pm, Farooq <[EMAIL PROTECTED]> wrote:
> www.enmac.com.hk
> GSM Mobile Phones, Digital iPods, Digital Clocks, Digital Pens,
> Digital Quran. Enjoy these products with Islamic Features (Complete
> Holy Quran with Text and Audio, Tafaseer books, Ahadees Books, Daily
> Supplications, Universal Qibla Direction, Prayer Timing and much more)
> visit our website for more information.

from where I can get the prices for there products.

Regards,
Saqib
-- 
http://mail.python.org/mailman/listinfo/python-list


Why does os.stat() tell me that my file-group has no members?

2012-12-19 Thread saqib . ali . 75


I'm using python 2.6.4 on Solaris 5-10.

I have a file named "myFile". It is owned by someone else, by I ("myuser") am 
in the file's group ("mygrp"). Below is my python code. Why does it tell me 
that mygrp has no members???


>>> import os, pwd, grp
>>> stat_info = os.stat("myFile")
>>> fileUID = stat_info.st_uid
>>> fileGID = stat_info.st_gid
>>> fileGroup = grp.getgrgid(fileGID)[0]
>>> fileUser = pwd.getpwuid(fileUID)[0]
>>> print "grp.getgrgid(fileGID) = %s" % grp.getgrgid(fileGID)

grp.getgrgid(fileGID) = grp.struct_group(gr_name='mygrp', gr_passwd='', 
gr_gid=100, gr_mem=[])
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Why does os.stat() tell me that my file-group has no members?

2012-12-19 Thread saqib . ali . 75

Thanks!! This was very helpful. It worked perfectly.
I had no clue about the intricacies of how python represents the group data 
from the underlying OS.

This page doesn't go into to detailed explanation like you did: 
http://docs.python.org/2/library/grp.html



On Wednesday, December 19, 2012 6:17:16 PM UTC-5, Hans Mulder wrote:
> On 19/12/12 22:40:00, [email protected] wrote:
> 
> > 
> 
> > 
> 
> > I'm using python 2.6.4 on Solaris 5-10.
> 
> > 
> 
> > I have a file named "myFile". It is owned by someone else, by
> 
> > I ("myuser") am in the file's group ("mygrp"). Below is my python
> 
> > code. Why does it tell me that mygrp has no members???
> 
> > 
> 
> > 
> 
>  import os, pwd, grp
> 
>  stat_info = os.stat("myFile")
> 
>  fileUID = stat_info.st_uid
> 
>  fileGID = stat_info.st_gid
> 
>  fileGroup = grp.getgrgid(fileGID)[0]
> 
>  fileUser = pwd.getpwuid(fileUID)[0]
> 
>  print "grp.getgrgid(fileGID) = %s" % grp.getgrgid(fileGID)
> 
> > 
> 
> > grp.getgrgid(fileGID) = grp.struct_group(gr_name='mygrp', gr_passwd='', 
> > gr_gid=100, gr_mem=[])
> 
> 
> 
> It doesn't say that your group has no members.
> 
> 
> 
> Every account has a primary group, and some accounts also
> 
> have addtional groups.  The primary group is the one in the
> 
> .pw_gid attribute in the pwd entry.  The additional groups
> 
> are those that mention the account in the .gr_mem attribute
> 
> in their grp entry.
> 
> 
> 
> Your experiment shows that nobody has "mygrp" as an additional
> 
> group.  So if you're a member of mygrp, then it must be your
> 
> primary group, i.e. os.getgid() should return 100 for you.
> 
> 
> 
> You can get a complete list of members of group by adding
> 
> two lists:
> 
> 
> 
> def all_members(gid):
> 
> primary_members = [ user.pw_name
> 
> for user in pwd.getpwall() if user.pw_gid == gid ]
> 
> additional_members = grp.getgrgid(gid).gr_mem
> 
> return primary_members + additional_members
> 
> 
> 
> 
> 
> Hope this helps,
> 
> 
> 
> -- HansM
-- 
http://mail.python.org/mailman/listinfo/python-list


Why is pexpect acting funny with sendline() and expect()?

2012-12-26 Thread saqib . ali . 75
I am running Solaris 5-10, python 2.6.2 and pexpect 2.4

I have the very simple python script below which exercises the functionality of 
sending and receiving text from the shell.

My understanding is that pexepect([pexpect.TIMEOUT, x,y,z], timeout=w) will 
return the index of the match that it found *since the last time pexpect was 
called*, but if it takes longer than w seconds, it will return 0.


Here is my very simple script:


#!/usr/bin/env python

import pexpect
myPrompt = " % "

myShell = pexpect.spawn("/bin/tcsh")
print "Sending 'JUNK-0' to shell"
x = myShell.sendline("JUNK-0")
y = myShell.expect([pexpect.TIMEOUT], timeout=1)   
print "y = %s" % y
print myShell.before 
print "=" * 80
print "\n\n"
 
for i in range(2):
print "i = %d" % (i+1)
print "Sending 'JUNK-%d' to shell" % (i+1)
x = myShell.sendline("JUNK-%d" % (i+1))
y = myShell.expect([pexpect.TIMEOUT, myPrompt], timeout=10)  
print "y = %s" % y
print myShell.before
print "=" * 80
print "\n\n"



FYI, my shell prompt is "myMachine % ", however in this script I have simply 
used " % " to keep it generic.

When I run it, I see the following output: 




Sending 'JUNK-0' to shell
y = 0
JUNK-0
myMachine % JUNK-0
JUNK-0: Command not found.
myMachine % 




i = 1
Sending 'JUNK-1' to shell
y = 1
JUNK-0
myMachine 




i = 2
Sending 'JUNK-2' to shell
y = 1
JUNK-0
JUNK-0: Command not found.
myMachine 





Why do I see "JUNK-0" consistently recurring in the output? It should be 
consumed by the first myShell.expect() statement, but it keeps showing up. Why??
-- 
http://mail.python.org/mailman/listinfo/python-list