2014-09-07 2 views
0

обновление;, следовательно, вида и полезные ответы двух великих пользователей здесь я сделал следующиеКак мне правильно подключиться к базе данных MySQL на Python?

привет дорогой Брин большое спасибо я стер дб CPAN и запущенной программы снова увидеть результаты:

[email protected]:~/perl> python cpan_100.py 
Traceback (most recent call last): 
    File "cpan_100.py", line 45, in <module> 
    user = User.create(name=entry["name"], cname=entry["cname"], 
TypeError: string indices must be integers, not str 

хорошо это довольно трудно - почему я получаю эти результаты !! `

здесь оригинальное размещение

довольно новыми для Python и программирования тоже?.

Я пытаюсь подключиться к базе данных MySQL на RDS Amazon, используя peewee, и я не могу заставить его работать. Я новичок в базах данных, поэтому я, вероятно, делаю что-то глупое, но это то, что я пытаюсь: я попытался подключиться к базе данных на python с peewee, но в какой-то момент программа терпит неудачу.

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() 

я получить обратно следующие результаты

[email protected]:~/perl> python cpan_100.py 
Traceback (most recent call last): 
    File "cpan_100.py", line 27, in <module> 
    User.create_table() #ensure table is created 
    File "build/bdist.linux-i686/egg/peewee.py", line 3078, in create_table                           
    File "build/bdist.linux-i686/egg/peewee.py", line 2471, in create_table                           
    File "build/bdist.linux-i686/egg/peewee.py", line 2414, in execute_sql                            
    File "build/bdist.linux-i686/egg/peewee.py", line 2283, in __exit__                            
    File "build/bdist.linux-i686/egg/peewee.py", line 2406, in execute_sql                            
    File "/usr/lib/python2.7/site-packages/MySQLdb/cursors.py", line 174, in execute                         
    self.errorhandler(self, exc, value)                                    
    File "/usr/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler                     
    raise errorclass, errorvalue                                      
peewee.OperationalError: (1050, "Table 'user' already exists")                              
[email protected]:~/perl> 

если вы можете помочь мне, я бы е очень рад! Спасибо за любую помощью

приветствия

+1

Хорошо, сначала я должен сказать, что я ничего не знаю о 'peewee'. Но это сообщение «peewee.OperationalError: (1050,« Таблица «пользователь» уже существует »). Кажется, что ядро ​​вашей проблемы: вы безоговорочно создаете таблицу с помощью' User.create_table() ', тогда как вы должны проверять, он существует и пытается создать его, только если он этого не делает. – isedev

+0

привет, дорогой Идедев. в первую очередь большое спасибо за намеки. я сделаю проверки и поближе посмотрю на таблицу allisting excisting в db. предположим, что я должен удалить какую-то вещь, например, таблицы в db - чтобы ее запустить ... – user3730786

+0

привет, я разместил обновление - см. начало оригинальной публикации. я хотел бы услышать от вас. я думаю, что мы очень близки. – user3730786

ответ

1

Похоже, он подключается к базе данных правильно, но не потому, что линии:

User.create_table() #ensure table is created 

пытается создать таблицу, то не удается, потому что таблица уже существует, следовательно, сообщение об ошибке:

peewee.OperationalError: (1050, "Table 'user' already exists") 

Постарайся комментируя это:

#User.create_table() 
+0

привет, дорогой мой, большое спасибо, я удалил db cpan и снова запустил программу, увидев результаты: 'martin @ linux-70ce: ~/perl> python cpan_100.py Traceback (последний звонок последний): Файл «cpan_100.py», строка 45, в user = User.create (name = entry ["name"], cname = entry ["cname"], TypeError: строковые индексы должны быть целыми, а не str ' – user3730786

+0

привет, я разместил обновление - см. верхнюю часть оригинальной публикации. Мне бы хотелось услышать от вас. Я думаю, что мы очень близки – user3730786

Смежные вопросы