Discuss / Python / 总结一下出现的问题

总结一下出现的问题

Topic source

1、sqlalchemy.exc.NotSupportedError: (mysql.connector.errors.NotSupportedError) Authentication plugin 'caching_sha2_password' is not supported

原因:在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。

解决方法:看到前面@黯128

engine =create_engine('mysql+mysqlconnector://user:password@localhost:port/database?auth_plugin=mysql_native_password')我试下了没成功,和网上查的说的方式都是一样的,改加密规则。我一开始安装的驱动是mysql-connector,看到有个帖子说下另一个驱动mysql-connector-python,于是就可以了。

2、原错误不见了,大概的意思是test.user not exist

原理我不是很懂,我一开始以为class User(Base)那已经是新建了一个表。实则好像并不是这个意思,看了@叫是先生去test数据库里加了user这个表就可以了。

3、 sqlalchemy.exc.IntegrityError: (mysql.connector.errors.IntegrityError) 1062 (23000): Duplicate entry '5' for key 'user.PRIMARY'

原因就是new_user已经新加之后可以删除了,然后再进行查询了,不然就电脑以为还要新建。用的是pycharm,IDLE应该不会影响。

本文增加数据或者查询的前提是需要数据库test以及表user已经创建好的,也可以使用代码 Base.metadata.create_all()来创建表,但是前提是在定义Base的时候需要传递数据库连接即

Base = declarative_base(engine)

而不能像列子里面那样不传递参数,关于SQLALchemy的一些用法可以参考:https://www.cnblogs.com/minseo/p/15305003.html


  • 1

Reply