help me~!!!'tuple' object has no attribute 'compile'

Y

ylj798

my code
-------------------------------------------------------------------------------------------
# -*- coding: utf8 -*-
#!/usr/bin/python

import urllib
import urllib2
import re
import MySQLdb

conn=MySQLdb.connect
(host="localhost",user="root",passwd="ylj",db="net", charset="utf8")
cur = conn.cursor()
sql='select
net_site.downline_re,net_site.down_re,net_cha.id,net_cha.urlid,net_cha.source_url
from net_site,net_cha where net_site.id=net_cha.urlid'
cur.execute(sql)
re=cur.fetchall()
if len(re)!=0:
for i in re:
down_re="%s"%(i[1])
source_url="%s"%(i[4])
data= urllib2.urlopen(source_url).read()
res=re.compile(down, re_DOTALL).findall(data)
print str
 
J

John Machin

my code
-------------------------------------------------------------------------------------------
# -*- coding: utf8 -*-
#!/usr/bin/python

import urllib
import urllib2
import re
import MySQLdb

conn=MySQLdb.connect
(host="localhost",user="root",passwd="ylj",db="net", charset="utf8")
cur = conn.cursor()
sql='select
net_site.downline_re,net_site.down_re,net_cha.id,net_cha.urlid,net_cha.source_url
from net_site,net_cha where net_site.id=net_cha.urlid'
cur.execute(sql)
re=cur.fetchall()

You have bound the name "re" to the tuple returned by cur.fetchall()
This overrides the binding to the re module.
Use "result" or some other meaningful name instead.
if len(re)!=0:
     for i in re:
         down_re="%s"%(i[1])
         source_url="%s"%(i[4])
         data= urllib2.urlopen(source_url).read()
         res=re.compile(down, re_DOTALL).findall(data)

So re is a tuple, not the re module ... splat!

And another problem: down is not defined; do you mean down_re?
         print str

Here are your next two problems:
(1) str is not defined
(2) str is a type; use some other meaningful name for whatever it is
that you are trying to print

HTH,
John
 
P

Peter Pearson

On Wed, 12 Nov 2008 02:07:46 -0800 (PST), (e-mail address removed) wrote:
[snip]
import urllib
import urllib2
import re
import MySQLdb

conn=MySQLdb.connect
(host="localhost",user="root",passwd="ylj",db="net", charset="utf8")
cur = conn.cursor()
sql='select
net_site.downline_re,net_site.down_re,net_cha.id,
net_cha.urlid,net_cha.source_url
from net_site,net_cha where net_site.id=net_cha.urlid'
cur.execute(sql)
re=cur.fetchall()

This line will hide the "re" that you imported 10 lines before.
if len(re)!=0:
for i in re:
down_re="%s"%(i[1])
source_url="%s"%(i[4])
data= urllib2.urlopen(source_url).read()
res=re.compile(down, re_DOTALL).findall(data)
print str
[snip]

I'm guessing that the "re" returned by cur.fetchall doesn't
have a "compile" function.
 

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,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top