python插入mysql记录,只能插入一个字段,百思不得其解,这是为啥
cursor = self.conn.cursor(pymysql.cursors.DictCursor)
# 1. 执行SQL,返回受影响的行数
effect_row1 = cursor.execute("select * from gnss_log2")
# 2. 执行SQL,返回受影响的行数,一次插入多行数据
for i in range(2):
cmd,para=self.make_random_test2_data()
print(cmd)
print(para)
er2 = cursor.executemany(cmd,para) #运行到这里会出错
# 查询所有数据,返回数据为元组格式
result = cursor.fetchall()
# 增/删/改均需要进行commit提交,进行保存
self.conn.commit()
# 关闭游标
cursor.close()
其中make_random_test2_data函数是这样的
请注意这两行
#b="INSERT INTO gnss_log2 (datetime,EW,JinDu,NS, WeiDu) VALUES (%s,%s,%s,%s,%s)"
#su=[now,rr1,ee1,rr2,ee2] #打开注释的这两行,且屏蔽以下2行,程序就可以运行,但是只能插入一个字段
def make_random_test2_data(self):
r1 = random.randint(0, 1)
r2 = random.randint(0, 1)
if(r1==0):
rr1="e"
else:
rr1="w"
if(r2==0):
rr2="n"
else:
rr2="s"
arr=[]
ee1=random.uniform(0, 360)
ee2=random.uniform(0,90)
now = datetime.now()# 获取当前时间
#b="INSERT INTO gnss_log2 (datetime,EW,JinDu,NS, WeiDu) VALUES (%s,%s,%s,%s,%s)"
#su=[now,rr1,ee1,rr2,ee2] #打开注释的这两行,且屏蔽以下2行,程序就可以运行,但是只能插入一个字段
b="INSERT INTO gnss_log2 (JinDu,WeiDu) VALUES ( %s,%s )"
su=[ee1,ee2] #出错,见下面提示
return b,su
出错提示如下:
File "d:\_work\_sync_work6\python\test_proj001\mysql_hal.py", line 36, in init
er2 = cursor.executemany(cmd,para)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\easy_\AppData\Roaming\Python\Python312\site-packages\pymysql\cursors.py", line 182, in executemany
return self._do_execute_many(
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\easy_\AppData\Roaming\Python\Python312\site-packages\pymysql\cursors.py", line 205, in _do_execute_many
v = values % escape(next(args), conn)
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
TypeError: not enough arguments for format string