Python 运算符 pymysql

Dio*_*lor 1 python mysql operators pymysql

我在使用 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)
Run Code Online (Sandbox Code Playgroud)

对于记录,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 );"  )
Run Code Online (Sandbox Code Playgroud)

Aya*_*Aya 5

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

cur.execute("INSERT INTO ... VALUES (?,?,?,?,?,?)", v)
Run Code Online (Sandbox Code Playgroud)

...到...

cur.execute("INSERT INTO ... VALUES (%s,%s,%s,%s,%s,%s)", v)
Run Code Online (Sandbox Code Playgroud)

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