Python模块PyMySQL没有参数

时间:2016-01-08 07:04:50

标签: python mysql ubuntu-14.04 pymysql

我编写了一个与OSX 10.10上的MySQL服务器通信的python脚本,它运行良好的Mac,直到我把它放在运行Ubuntu 14.04的VPS上

问题主要在于pyMySQL模块。 :我甚至无法在git页面here

上运行他们的示例脚本

用于运行以下代码:

import pymysql.cursors

# Connect to the database
connection = pymysql.connect(host='localhost',
                         user='user',
                         password='passwd',
                         db='db',
                         charset='utf8mb4',
                         cursorclass=pymysql.cursors.DictCursor)
try:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()

    with connection.cursor() as cursor:
    # Read a single record
    sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
    cursor.execute(sql, ('webmaster@python.org',))
    result = cursor.fetchone()
    print(result)
finally:
    connection.close()

结果是

Traceback (most recent call last):
File "1.py", line 9, in <module>
cursorclass=pymysql.cursors.DictCursor)
File "build/bdist.linux-x86_64/egg/pymysql/__init__.py", line 93, in Connect
TypeError: __init__() got an unexpected keyword argument 'password'

环境: Ubuntu 14.04 x86_64 Python 2.7.10 PyMySQL 0.6.7 Mac正在运行上面的脚本,但不是ubuntu。 提前谢谢。

3 个答案:

答案 0 :(得分:0)

我没有做太多检查错误消息。相反,我卸载unbuntu服务器上的所有软件包,并按照Mac上的软件包列表将它们逐个安装到同一版本。令人惊讶的是,问题解决了。不幸的是,我不知道哪个模块导致问题

如果您不想花费太多时间逐个更新模块,可能需要尝试一下。

答案 1 :(得分:0)

这似乎是一个ubuntu问题,如果你安装了最新的pypi版本就可以解决。

我从dist-packages中的ubuntu中删除了包,并将其安装在site-packages中:

sudo apt-get purge python3-pymysql
sudo pip3 install --upgrade pymysql

你真的不想这样做,特别是在服务器上。或者你使用virtualenv:

virtualenv -p python3.4 venv3
source venv3/bin/activate
pip3 install --update pip
pip3 install --update pymysql

您需要更多地了解virtualenv才能使用它们,但我们的想法是您在venv3中安装了一个完整且独立的python3.4环境,并使用{{1}激活}。这样就更难打破你的ubuntu(这在很大程度上依赖于一个正常工作的python)。此外,您可以在不同的virtualenv中安装不同版本的软件包。此外,在调试时,您可以将print-statements添加到virtualenv的site-packages文件夹中的python-code,而不会有严重破坏系统的风险。这很好,因为许多优秀的python库都有糟糕的错误报告。

答案 2 :(得分:0)

使用Python面对此错误:3.6,PyMySQL3:0.5。 解决方案:将'password'参数更改为'passwd'

以下是具有默认值的参数列表 host =“localhost”,user = None,passwd =“”,db = None,port = 3306,unix_socket = None,charset ='',sql_mode = None,read_default_file = None,conv = decoders,use_unicode = None,client_flag = 0,cursorclass = Cursor,init_command = None,connect_timeout = None,ssl = None,read_default_group = None,compress = None,named_pipe = None