2013-07-09 54 views
1

我跟着這個鏈接: 「https://pypi.python.org/pypi/bottle-mysql/0.1.1我試圖用bottle.py連接MySQL,但它顯示的錯誤

和 「http://bottlepy.org/docs/dev/

這是我的PY文件:

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_parameter_name之類的東西會更清楚一些,因爲它實際上指的是裝飾Python函數中db參數的名稱

+0

@rothman。我剛剛嘗試了你所說的,但沒有用即使我已經更改爲delhipoc或dbname或db。顯示的是同樣的錯誤 –

+0

@GopiKrishna:你確定你重新啓動了服務器嗎?這個問題顯然存在於你發佈的代碼中.dbname必須與param名稱匹配如果你需要進一步的幫助,請編輯你的問題,包括你現在運行的修改後的代碼,謝謝 –

+0

@rothman無論如何感謝你的建議,我實際上通過mysqldb解決了它。 –

相關問題