[DB-SIG] InternalError

helena bhaska helena_b2001 at yahoo.com
Thu Jan 8 21:04:47 EST 2004


Hi,
so I fixed my weird problem by reinstalling MySQLdb
(note to self: should try that first before running
for help :)), but I am still curious why it worked via
apache! Does anyone have any ideas?
Thanks!
Helena
--- Chris Cogdon <chris at cogdon.org> wrote:
> 
> On Jan 8, 2004, at 16:19, helena bhaska wrote:
> 
> > class
> >
>
PurpleRequestHandler(SocketServer.BaseRequestHandler):
> >     def handle(self):
> >         while 1:
> >             rq = netstring.readns(self.request)
> >             if rq == "":
> >                 break
> >             dt = DateTime.now()
> >             db = MySQLdb.Connect(host="localhost",
> > user="root", passwd="password", db="Test")
> >             c = db.cursor()
> >             c.execute("""INSERT INTO Commands
> (Time,
> > Command) VALUES (%s, %s)""", (str(dt), rq))
> >             c.close()
> >             db.close()
> > purpleServer =
> SocketServer.ThreadingTCPServer(('',
> > 8081), PurpleRequestHandler)
> > purpleServer.serve_forever()
> >
> > The interesting part is that if my server runs on
> > apache and I connect to it through
> urllib.urlopen(),
> > the data is saved into the database just fine.  Is
> my
> > MySQL db not configured correctly or something?
> > Thanks for any pointers!
> 
> It's very odd that it's working via a apache CGI,
> but not through the 
> python server handlers. To test it out on my own
> machine, I wrote this 
> quick thing:
> 
> import SocketServer, MySQLdb
> 
> class Handler ( SocketServer.StreamRequestHandler ):
>      def handle ( self ):
>          while 1:
>              t = self.rfile.readline ()
>              if t == '': break
>              db = MySQLdb.Connect (
> host='localhost', user='root', 
> passwd='xxx', db='xxx' )
>              db.close ()
>              print "read command:", t
> 
> server = SocketServer.ThreadingTCPServer (
> ('',8081), Handler )
> server.serve_forever ()
> 
> ( I used the StreamRequestHandler because I don't
> have netstring :)
> 
> And then telnetted to port 8081 and typed a command.
> The command came 
> up just fine, and no error message from the MySQL
> Connect.
> 
> You might want to try and eliminate problems in the
> client, first, by 
> simply telnetting to your port 8081 and typing
> commands in netstring 
> format. Eg:
> 
> "5:Hello," (omit quotes)
> 
> If THAT works, then that's really odd. Narrow it
> down to this:
> 
> test1.py:
> 
> import MySQLdb
> db = MySQLdb.Connect ( host='localhost',
> user='root', passwd='xxx', 
> db='xxx' )
> 
> Run that... if that fails, then you've got problems
> in the MySQLdb 
> installation. If that works, try my script above, if
> that fails, then 
> ... well, I dont know :/
> 
> 
> One thing to ask... are the parameters to Connect
> for your SocketServer 
> version EXACTLY the same as the parameters for your
> apache CGI version?
> 
> 
> -- 
>     ("`-/")_.-'"``-._        Chris Cogdon
> <chris at cogdon.org>
>      . . `; -._    )-;-,_`)
>     (v_,)'  _  )`-.\  ``-'
>    _.- _..-_/ / ((.'
> ((,.-'   ((,/   fL
> 


__________________________________
Do you Yahoo!?
Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
http://hotjobs.sweepstakes.yahoo.com/signingbonus



More information about the DB-SIG mailing list