Rumah  >  Soal Jawab  >  teks badan

python2.7 mysql execute() masalah

Sebahagian daripada kod untuk memasukkan data:

            try:
                sql = "INSERT INTO {}({}) VALUES(%s)".format(table,cols) % q[0]
                print sql           
                result = self.cur.executemany(sql,q)
                #result = self.cur.execute(sql)
                insert_id = self.db.insert_id()
                self.db.commit()
                #判断是否执行成功
                if result:
                    return insert_id
                else:
                    return 0
            except MySQLdb.Error,e:
                #发生错误时回滚
                print "数据库错误,原因%d: %s" % (e.args[0], e.args[1])               
                self.db.rollback()

Dapatkan selepas melaksanakan program

[(u'""," http://sz.centanet.com/ershoufang/szlg13772053.html"," 345\u4e07|3\u5ba42\u5385|74.89\u5e73"," \u5357|2007\u5e74|\u4f4e\u5c42(\u517134\u5c42)|\u8c6a\u88c5|\u5eb7\u8fbe\u5c14\u82b1\u56ed\u4e94\u671f(\u8774\u8776\u5821)|"',)]
INSERT INTO zydc(follow, house_url, price_area, houseinfo) VALUES(%s)
数据库错误,原因1136: Column count doesn't match value count at row 1
None

Tiada masalah apabila saya memasukkan pernyataan sisipan secara manual dalam pangkalan data, tetapi saya tidak tahu mengapa ralat pelaksanaan berlaku.
Apabila saya memasukkan data ke dalam jadual yang hanya menyimpan pautan, tiada masalah langsung.
Tadi apabila saya ingin mengeluarkan punca ralat, saya mendapati bahawa data telah berjaya dimasukkan Kemudian saya cuba menggunakan executemany() dan ralat berlaku lagi.

怪我咯怪我咯2710 hari yang lalu764

membalas semua(1)saya akan balas

  • PHPz

    PHPz2017-05-18 10:54:05

    Akhirnya saya berputus asa menggunakan executemany().

    INSERT INTO employees (first_name, hire_date)
    VALUES ('Jane', '2005-02-12'), ('Joe', '2006-05-23'), ('John', '2010-10-03')

    Hanya gunakan borang di atas dan laksanakan().
    https://dev.mysql.com/doc/con...

    balas
    0
  • Batalbalas