问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

pandas.DataFrame.to_sql写入Mysql报错1170

发布网友 发布时间:2024-10-04 06:36

我来回答

1个回答

热心网友 时间:2024-11-30 16:40

今天在使用pandas.DataFrame.to_sql接口,将tushare获取的一个df写入mysql时,遇到了报错。

报错信息是:PGM:writedb:write_records_into_mysql:error: (_mysql_exceptions.OperationalError) (1170, "BLOB/TEXT column 'code' used in key specification without a key length") [SQL: u'CREATE INDEX ix_k_data_code ON k_data (code)'] (Background on this error at: sqlalche.me/e/e3q8)

这个错误在创建Mysql表时很常见,主要是因为键值字段是变长的BLOB或TEXT类型,导致Mysql引擎无法生成索引。

尽管我尝试了各种方法,但问题仍然没有解决,这让我感到非常困扰。半年前的代码,核心程序没有变化,但现在重构一下,却无法正常运行。

不过,我还是决定将这个报错记录下来。最近我正在重构半年前写的股票程序,计划整理成一个标准的Python包。其中,write_records_into_mysql函数是所有程序写入Mysql的接口,它有两个必输参数,分别是df和table_name;三个默认参数,分别是conn、if_exists、dtype。

这个函数主要作用是调用pandas.DataFrame.to_sql接口,将df写入Mysql。虽然看起来存在重复封装,但为什么还要调用write_records_into_mysql呢?这是一个好问题。

主调函数中,核心代码块在一个循环体里,传入stock_code和issue_date两个参数,调用tushare的API获取个股日K线数据。

如果获取成功,将返回的df存入Mysql;如果获取失败,则使用continue语句跳出本次循环,处理下一只股票的数据。

为了帮助大家理解Pandas和Dataframe,我举一个例子。在REPL中引入tushare包,获取个股"002930"日K线数据,可以看到df的索引和栏位。

在重构的程序中,我取到k_data_by_code数据后,做了以下几步操作:将索引转换成列'seq',使用set_index函数设置新的索引,插入stock_name,定义字典变量dict_k_data,最后调用write_records_into_mysql函数将df写入Mysql。

尽管我使用dtype={'code':VARCHAR(k_data_by_code.index.get_level_values('code').str.len().max())}来调用write_records_into_mysql函数,但仍然报同样的错。

我不明白为什么同样的代码半年前可以成功,而现在就不行。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
离过年还有2个月,是找工作,还是等过年? 还有两个多月就过年了,我是现在找工作呢还是过完年再找呢?现在找工作是... i57300u处理器属于什么水平 i5-7300u处于什么水平 国家线2024考研分数线是多少 电脑软件使用记录如何查看电脑当天的使用记录 在哪里查电脑最近使用情况怎么查看笔记本电脑的使用记录 英语题急求 ...以前都是以1MB/s速度下载,但是现在都不到300K/s,是不是WiFi路由器... 我家4兆的网线1台电脑可是我今天测网速时却只有16KB/S 这是为什么啊 求解6根线屋面水箱流量开关的接发,一组24V一组起泵一组停泵。 ...ν=x从A(x0, y0)沿曲线y=y(x)移动到 B(x1, y1),求曲线y=y(x)为何... 快手直播赚钱吗怎么直播 一道高中数学题(Ⅰ)已知函数f(x)=x3-x,其图象记为曲线C. 设函数f(x)=ax 2 +bx+clnx,(其中a,b,c为实常数且a>0),曲线y=f(x)在... 己知函数f(x)=x的3次方-x,其图像记为曲线C,求函数f(x)的极值? 已知函数f(x)=x3-3x,若过点A(1,m)作曲线y=f(x)的切线有且仅有一条,则... 函数f(x)=x3+ax+b ab属于R的图像记为E 过点A(1/2,-3/8)作曲线E的切线... ...+ax+b(a,b∈R)的图象记为E,过点A(12,-38)作曲线E的切线有且仅有两... ...+b,a,b∈R的图象记为曲线E,过一点A(12,-38)作曲线E的切线,这样的切 ... 消防水流量开关怎么调试呢? 因车祸导致肺受损断3根肋骨锁骨错位应赔偿多少钱 右侧多发肋骨骨折伴胸腔积液 右侧锁骨骨折 头部外伤 多处软组织伤 达到... 车祸致人一根肋骨和锁骨断裂的应赔偿多少钱 请问:59岁出车祸,断了一根锁骨和六根肋骨,能评上残吗?有多少赔偿金? 因交通事故,脚骨骨折,锁骨骨折,肋骨骨折,肺部受伤能得到多少赔偿 我们这一片地区经常性的停电几秒钟就来电,什么情况。。 今天我家停电老是停一会几秒钟之后马上又来了,过了一会儿之后又停了... 如何调节消火栓流量开关? 马德里有哪些小众景点值得推荐? 港股量化交易-基于富途OpenAPI+Python开发的量化交易程序 流量开关电源接线图 生日命运:五月二十九日是什么星座 阳历5月29日是什么星座 公历5月29号出生星座查询 我是九一年阴历五月二十九,阳历七月十号,我是什么星座 如果对方不用whatsapp了,怎么知道? 梦见自己爬到高高的树上拿着画夹画画是怎么回事? 农历五月二十九是什么星座男女性格差异 车停售是什么意思? 伺服稳压器怎么样 长虹手机怎么开锁 电视遥控器怎么开锁 ...世博 走向世界"为题,写一篇600到1000字征文,要注明某某书读后感 我爱世博,快乐成长 书信作文怎么写 早上起床不晨勃说明什么 早上不晨勃的原因 抖音怎么传照片和视频啊? 内蒙古大学最好的十大专业有哪些 内蒙古大学王牌热门专业排行榜_百度知 ... 内蒙古民族大学最好的专业 小霸王游戏机上有个 双人闯关游戏 一个人拿刀一个人那链锁带镖头的游 ...