我正在尝试使用mysql.connector,sqlalchemy和pandas建立一个mySQL数据库。我能够创建数据库,设置一些表并分配主键。我到了需要将较大的一张表放入数据库的地步。我尝试以下操作:
full_gencode_df.to_sql(name='full_gencode_df', con=engine, index=True)
会产生以下错误(为水平滚动表示歉意,这是一个长错误,甚至被截断):
sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes [SQL: u'INSERT INTO full_gencode_df (`index`, ccdsid, end, exon_id, exon_number, ....
在寻找解决方案之后,据我所知这是SQL端而不是Python端的错误,解决方案是更改max_allowed_packet
以允许将较大的数据包插入数据库中。不幸的是,我没有数据库服务器上的SUPER
特权,而且我不知道获得该特权的机会是多少。
我找不到不具有SUPER
特权的解决方法。在Python端或SQL端是否有解决方法?尝试对表进行分块并以append
模式写入表会有所帮助吗?