1

我在使用 pymysql 和 python 运算符时遇到了一些糟糕的情况。不过,我对 python 运算符了解不多。

我想在数据库中插入一些值。编码:

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/Applications/MAMP/tmp/mysql/mysql.sock', user='root', passwd='root', db='db2', charset='utf8')
cur = conn.cursor()
v = (123 , 'foobarfoobar', 'foo', 1241, 3, 132 )
cur.execute("INSERT INTO celebs(num_id, Text, Handle, Followers, RT, Timestamp) VALUES (?,?,?,?,?,?)", v)

记录一下 mySQL 结构是INT (PRI), INT, TEXT, VARCHAR, INT, INT, VARCHAR.

我运行这个,我得到TypeError: not all arguments converted during string formatting

任何详细信息如何解决它,可能还有一些解释操作员如何在 python 中工作。我认为在php中更容易:$a = 22; echo "$a days";

更新:

我直接使用 Insert into 但它仍然没有插入数据:

cur.execute("INSERT INTO celebs (num_id, Text, Handle, Followers, RT, Timestamp) VALUES (123 , 'foobarfoobar', 'foo', 1241, 3, 132 );"  )
4

3 回答 3

5

根据源代码paramstyleformat,所以你需要改变......

cur.execute("INSERT INTO ... VALUES (?,?,?,?,?,?)", v)

...至...

cur.execute("INSERT INTO ... VALUES (%s,%s,%s,%s,%s,%s)", v)

如果您使用的是事务存储引擎,例如 InnoDB,则必须conn.commit()在执行INSERT查询后通过调用显式提交事务。

于 2013-06-17T15:12:18.947 回答
0

检查mysql引擎。Pymysql 不适用于 InnDB,但当我从 InnoDB 更改为 MyISAM 时它工作正常

于 2013-09-05T10:18:17.557 回答
0

我认为错误出在 v 的数据结构中。它应该是列表而不是元组

于 2013-06-17T14:17:59.107 回答