CGI/Perl Guide | Learning Center | Forums | Advertise | Login
Site Search: in

  Main Index MAIN
INDEX
Search Posts SEARCH
POSTS
Who's Online WHO'S
ONLINE
Log in LOG
IN

Home: General Discussions: General Questions:
python peewee: one question to db

 



dilbert
User

Jul 16, 2014, 11:58 AM

Post #1 of 1 (4641 views)
python peewee: one question to db Can't Post

hello - relatively new to python i have some issues


Code
import urllib 
import urlparse
import re
# import peewee
import json
from peewee import *


#from peewee import MySQLDatabase ('cpan', user='root',passwd='rimbaud')

db = MySQLDatabase('cpan', user='root',passwd='rimbaud')

class User(Model):
name = TextField()
cname = TextField()
email = TextField()
url = TextField()

class Meta:
database = db # this model uses the cpan database


User.create_table() #ensure table is created


url = "http://search.cpan.org/author/?W"
html = urllib.urlopen(url).read()
for lk, capname, name in re.findall('<a href="(/~.*?/)"><b>(.*?)</b></a><br/><small>(.*?)</small>', html):
alk = urlparse.urljoin(url, lk)

data = { 'url':alk, 'name':name, 'cname':capname }

phtml = urllib.urlopen(alk).read()
memail = re.search('<a href="mailto:(.*?)">', phtml)
if memail:
data['email'] = memail.group(1)


data = json.load('email') #your json data file here

for entry in data: #assuming your data is an array of JSON objects
user = User.create(name=entry["name"], cname=entry["cname"],
email=entry["email"], url=entry["url"])
user.save()



but this fails... see



Code
) 
martin@linux-70ce:~/perl> python cpan_100.py
Traceback (most recent call last):
File "cpan_100.py", line 47, in <module>
data = json.load('email') #your json data file here
File "/usr/lib/python2.7/json/__init__.py", line 286, in load
return loads(fp.read(),
AttributeError: 'str' object has no attribute 'read'
martin@linux-70ce:~/perl>



guess that i have made something wrong: We should try out to write like so:



Code
data = []

before our html is going to parse and loop and then do

Code
entry = { 'url':alk, 'name':name, 'cname':capname }



and probably

Code
data.append(entry.copy())

within the loop.


if you have some ideas - i would be glad to hear from you

 
 


Search for (options) Powered by Gossamer Forum v.1.2.0

Web Applications & Managed Hosting Powered by Gossamer Threads
Visit our Mailing List Archives