pythonmysql异常
在使用tushare将数据存入MySQL时,可能会遇到文本字段错误问题,具体错误信息为:不支持BLOB/TEXT作为主键和索引。若原程序没有处理这个问题,可以尝试修改代码如下:
首先,需要明确指出错误原因在于默认情况下,pandas.DataFrame.to_sql函数对TEXT类型处理不当。为解决此问题,需在写入数据库时手动指定索引字段与字段类型。具体步骤为导入from sqlalchemy import VARCHAR,并在调用to_sql函数时,明确设置参数。
例如,修改后的代码可以如下所示:
通过上述修改,可以成功避免BLOB/TEXT类型作为主键和索引的错误。但是,若仍遇到类似问题,建议查阅官方文档或社区讨论以获取更多解决方案。
参考文献:
大西洋暖流:pandas.DataFrame.to_sql写入Mysql报错1170
㈡ python 连接mysql数据库报错
编辑mysql配置文件my.ini(在MySQLServer的安装目录),在[mysqld]这个条目下加入 skip-grant-tables
保存退出后重启mysql
1.点击“开始”->“运行”(快捷键Win+R)。
2.启动:输入 net stop mysql
3.停止:输入 net start mysql
这时候在cmd里面输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。按下面的流程走(红色部分为输入部分,绿色的是执行后显示的代码不用输入):
1.进入mysql数据库:
mysql> use mysql; Database changed
2.给root用户设置新密码,蓝色部分自己输入: mysql> update user set password=password("新密码") where user="root"; Query OK, 1 rows affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0
3.刷新数据库 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
4.退出mysql: mysql> quit Bye
改好之后,再修改一下my.ini这个文件,把我们刚才加入的"skip-grant-tables"这行删除,保存退出再重启mysql就可以了。
总结:猜测根本原因就是简单的密码输入错误,通过以上方法我们可以不验证密码来连接上mysql,然后设置新密码。