【问题标题】:MySQLdb: Operand should contain 1 column(s)MySQLdb:操作数应包含 1 列
【发布时间】:2023-03-29 13:50:01
【问题描述】:

我正在尝试使用 Python 和 MySQLdb 将一些数据插入 MySQL 数据库。当我在我的程序中执行以下函数时,MySQL 返回错误“1241, 'Operand should contain 1 column(s)'”

用户、密码、数据库正确,表存在并授予所有权限。

def write_to_mysql(pname, dat, like, reachs, talker, friendsfans):
''
    try:
        con = mdb.connect(user='user', passwd='password', host='localhost', db='database');
    except Exception. err:
        print(err)

    with con:

        cur = con.cursor()
        cur.execute("INSERT INTO fbinsights (page, datum, likes, reach, talking, fanfriends) VALUES( %s, %s, %s, %s, %s, %s)", (pname, dat, like, reachs, talker, friendsfans))

    connection.commit()

哪里出错了?

完整的追溯:

File "insights.py", line 111, in <module>
    main()
  File "insights.py", line 108, in main
    write_to_mysql(PAGE_NAME, date, likes_atm, reach_day, talking_day, friends_of_fans)
  File "insights.py", line 90, in write_to_mysql
    cur.execute("INSERT INTO fbinsights (page, datum, likes, reach, talking, fanfriends) VALUES( %s, %s, %s, %s, %s, %s)", (pname, dat, like, reachs, talker, friendsfans))
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-freebsd-9.0-RELEASE-p3-amd64.egg/MySQLdb/cursors.py", line 174, in execute
    self.errorhandler(self, exc, value)
  File "/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-freebsd-9.0-RELEASE-p3-amd64.egg/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1241, 'Operand should contain 1 column(s)')

【问题讨论】:

  • 连接或执行?显示完整的回溯!
  • "cur.execute("INSERT INTO fbinsights (page, datum, likes,reach, talk, fanfriends) VALUES(%s, %s, %) 末尾缺少一个")" s, %s, %s, %s)", (pname, dat, like,reachs, talker, friendsfans)" 行。在您的实际代码中是否相同?
  • @ManjulaWeerasinge 复制和粘贴错误。在问题中修复它
  • 这真的是您的实际代码吗?仍然存在语法错误(在异常子句中)。
  • 您实际插入的变量的类型是什么?我认为有问题。

标签: python mysql mysql-python


【解决方案1】:

@schlamar 回答了它。传递给 MySQL 的类型有误。

【讨论】:

    【解决方案2】:

    我在生成SELECT 查询时遇到此错误,其中的列选择括在括号中(错误地):SELECT (id, name, age) FROM members;

    请注意,如果括号中仅列出一列,则不会引发此错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      相关资源
      最近更新 更多