【问题标题】:Type error in PyMySQL cursorPyMySQL 游标中的类型错误
【发布时间】:2017-11-22 04:55:12
【问题描述】:

我有以下简单的代码来测试我的 Python Mysql 连接。

connection = pymysql.connect(host = "localhost",
                     user = "root",
                     passwd = "",
                     db = "bugs",
                     charset = "utf8mb4",
                     cursorclass = "pymysql.cursors.Dictcursor")

try:
    with connection.cursor() as cur:
        cur.execute('''SELECT COUNT(*) FROM tbl_firefox''')

        for row in cur.fetchall():
            print("Number of rows in firefox table:", row)
    connection.commit()
finally:
    connection.close()

运行代码时出现类型错误

File "test2.py", line 31, in <module>
    with connection.cursor() as cur:
  File "C:\Program Files\Anaconda3\lib\site-packages\pymysql\connections.py", line 833, in cursor
    return self.cursorclass(self)
TypeError: 'str' object is not callable

我一直在其他 python-mysql 代码中查看类似的错误。但仍然没有运气。如果有人能指出我的错误,非常感谢。

【问题讨论】:

    标签: mysql python-3.x pymysql


    【解决方案1】:

    引用自PyMySQL:

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

    应该是passwd以外的密码,并且cursorclass不被引号括起来

    【讨论】:

    • 我的菜鸟错误。非常感谢。
    猜你喜欢
    • 2017-08-08
    • 2021-01-03
    • 1970-01-01
    • 2014-09-21
    • 2015-04-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多