2013-07-09 2 views
1

я следовал этой ссылке: "https://pypi.python.org/pypi/bottle-mysql/0.1.1"я пытаюсь подключиться MySQL с помощью bottle.py, но он показывает ошибку

и "http://bottlepy.org/docs/dev/"

это мой пй файл:

import bottle 
from bottle import route, run, template 
import bottle_mysql 

app = bottle.Bottle() 
# # dbhost is optional, default is localhost 
plugin = bottle_mysql.Plugin(dbuser='root', dbpass='root', dbname='delhipoc') 
app.install(plugin) 
@route('/hai/<name>') 

def show(name,dbname): 
    dbname.execute('SELECT id from poc_people where name="%s"', (name)) 
    print "i am in show" 
    return template('<b>Hello {{name}}</b>!',name=name) 

run(host='localhost', port=8080)  

это мой код, и он бросает ошибку, как:

Traceback (most recent call last): 
File "C:\Python27\lib\site-packages\bottle.py", line 764, i 
return route.call(**args) 
File "C:\Python27\lib\site-packages\bottle.py", line 1575, 
rv = callback(*a, **ka) 
TypeError: show() takes exactly 2 arguments (1 given) 

Пожалуйста, помогите мне

+0

Я страдаю тем же, что и ручной плагин. Проблема здесь в том, что при настройке плагина обратные вызовы показывают, что у них нет аргументов :( Я до сих пор не могу заставить его работать ... – Fabzter

ответ

0

Не знакомый с бутылкой-MySQL, но в этом примере вы предоставили:

@app.route('/show/:<tem>') 

В коде:

@route('/hai/<name>') 

Это было бы ожидать:

@route('/hai/:<name>') 
0

Простой. Измените эту строку:

def show(name,dbname): 

к этому:

def show(name, delhipoc): 

еще лучше, использовать dbname = 'db' и затем

def show(name, db): 

Плагин MySQL выбрал неудачное имя его имя db param. Было бы более понятно называть его чем-то вроде db_parameter_name, потому что на самом деле это имя параметра db в украшенной функции Python.

+0

@ththman. Я только что попробовал то, что вы сказали, но нет никакой пользы даже я изменился на delhipoc или dbname или db.Это показывает ту же ошибку. –

+0

@GopiKrishna: Вы уверены, что перезапустили свой сервер? Эта проблема явно присутствует в коде, который вы опубликовали. 'dbname' должно совпадать с именем параметра в вашей функции.Если вы хотите получить дополнительную помощь, пожалуйста, отредактируйте свой вопрос, чтобы включить измененный код, который вы сейчас используете. Спасибо. –

+0

@rothman в любом случае благодарит за предложение. Я действительно решил его, перейдя через mysqldb. –

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