3

PythonとMySQLdbを使用して、MySQLデータベースにデータを挿入しようとしています。プログラムで次の関数を実行すると、MySQLはエラー「1241、「オペランドには1つの列が含まれている必要があります」」を返します。

ユーザー、パスワード、データベースが正しく、テーブルが存在し、すべての権限が付与されています。

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)')
4

2 に答える 2

7

@schlamarがそれに答えました。間違ったタイプがMySQLに渡されました。

于 2013-02-01T14:39:29.540 に答える
0

SELECT括弧で囲まれた(誤って)選択する列を含むクエリを生成しているときに、このエラーが発生しましたSELECT (id, name, age) FROM members

括弧内にリストされている列が1つしかない場合は、このエラーは発生しないことに注意してください。

于 2014-11-06T14:25:26.027 に答える