Link1133 2023-06-21 00:52 采纳率: 44.4%
浏览 13

将DF表导入mysql报错“not enough arguments for format string”

将DF表导入mysql报错“not enough arguments for format string”,这要怎么解决


```python
import requests
import re
import time
import numpy
import pymysql
import pandas
pro = ts.pro_api('48690a76aaebc59996fa91f2e789c28ff04d9092ca667ec9')
data = pro.daily(ts_code='002229.SZ', start_date='20210101', end_date='20230620')
df2 = data.iloc[:,0:6]
df2.columns=['股票代码','交易日期','开盘价','最高价','最低价','收盘价']
df3=np.array(df2)
df3=df3.tolist()
db = pymysql.connect(host='127.0.0.1', user='root', passwd='', database='python', port=3306 ,charset='utf8') 
#如果用localhost就不行

cursor = db.cursor()
sql = "INSERT INTO 'stock_basic'(股票代码,交易日期,开盘价,收盘价) VALUES (%s,%s,%s,%s,%s,%s,%s)"
 try:

    cursor.executemany(sql,df3)

    db.commit()
except Exception as e:
    print(e)
   
    db.rollback()

cursor.close()

db.close()

报错截图:

img


数据库表结构:

img

  • 写回答

2条回答 默认 最新

  • Seal^_^ 优质创作者: 云计算技术领域 2023-07-21 22:51
    关注

    这里改改试试

    sql = "INSERT INTO 'stock_basic'(股票代码,交易日期,开盘价,收盘价) VALUES (%s,%s,%s,%s,%s,%s,%s)"
    

    前面括号有(股票代码,交易日期,开盘价,收盘价)4个字段,与后面不对应, (%s,%s,%s,%s,%s,%s,%s),有7个%s,

    正确写法:

    sql = "INSERT INTO 'stock_basic'(股票代码,交易日期,开盘价,收盘价) VALUES (%s,%s,%s,%s)"
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月21日