【问题标题】:i am trying to connect mysql using bottle.py, but it is showing error我正在尝试使用bottle.py连接mysql,但它显示错误
【发布时间】:2013-07-09 13:02:38
【问题描述】:

我点击了这个链接:“https://pypi.python.org/pypi/bottle-mysql/0.1.1

和“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)

请帮帮我

【问题讨论】:

  • 我在使用手工插件时遇到了同样的问题。这里的问题是在设置插件时,回调显示为没有 args :( 我仍然无法让它工作......

标签: python python-2.7 mysql-python bottle


【解决方案1】:

不熟悉bottle-mysql,但在你提供的例子中:

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

在您的代码中:

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

它可能期望:

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

【讨论】:

    【解决方案2】:

    简单。更改此行:

    def show(name,dbname):
    

    到这里:

    def show(name, delhipoc):
    

    更好的是,使用dbname = 'db' 然后

    def show(name, db):
    

    MySQL 插件为其数据库名称参数选择了一个不幸的名称。将其称为db_parameter_name 之类的名称会更清楚,因为它实际上指的是装饰 Python 函数中 db 参数的 name

    【讨论】:

    • @rothman。我刚刚尝试了您所说的,但即使我已更改为 delhipoc 或 dbname 或 db 也没有用。 is 显示相同的错误。
    • @GopiKrishna:你确定你重启了你的服务器吗?您发布的代码中显然存在此问题。 dbname 必须与函数中的参数名称匹配。如果您需要进一步的帮助,请编辑您的问题以包含您现在正在运行的修改后的代码。谢谢。
    • @rothman 无论如何感谢您的建议。我实际上是通过 mysqldb 解决的。
    猜你喜欢
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 2020-06-07
    • 2021-11-10
    • 2019-07-16
    相关资源
    最近更新 更多