Tag Archives: pymysql

An error occurs when pymysql uses% d to pass in parameters

Error:

When using pymysql, an error occurs when using% d to pass parameters in the SQL statement. As shown in the figure:

Error information: typeerror:% d format: a number is required, not str

Cause of problem:

         When a parameter of type int is passed in, it is converted to a parameter of type str. Therefore, the solution is to change% d into% s, pass in int type, and it can still be executed.

Modified:

Data of type int passed in:

Can execute successfully

Solution:

          When data of type int is passed in, the parameter is still passed with% s.

An error keyerror255 was reported when pymysql connect to MySQL

Contents of articles

Solutions for error reporting

abstract

Pymysql connect to MySQL reported an error of keyerror255. Recently, I was trapped for more than two months by a difficult problem. If you search this title, you can see that the search engine has provided n ^ 2 articles on solutions. Why do you still trap me for so long?Don’t I know Baidu?NO NO NO!! The biggest problem is that my executive computer and data storage computer are not the same computer!!

Error information

  File "D:\Programfiles\Anaconda3\lib\site-packages\pymysql\connections.py", line 1269, in _get_server_information
    self.server_charset = charset_by_id(lang).name
  File "D:\Programfiles\Anaconda3\lib\site-packages\pymysql\charset.py", line 38, in by_id
    return self._by_id[id]
KeyError: 255

The main reason is that MySQL 8.0 updates many character sets, but these character sets are longer than 255 , so the old version of pymysql does not support characters longer than 255

Online can find a lot of articles to solve this problem, consistent solution, update pymysql

pip install --upgrade pymysql

The following casually put a, interested can see, don't look also doesn't matter, full text summary on a sentence update pymysql, directly execute the above update code, if solve, OK! All is well, you can quit, but you can't solve it. The link article is not meaningful. Let's continue to read my text

Django appears after changing the default database SQLite3 to pymsql Keyerror:255 How to upgrade pymysql

Solution

As mentioned before, my executive computer and data storage computer are not the same computer!!
My own computer is mysql5.7, and the data storage computer version is 8.1
because at the beginning, the company's network security was upgraded to a secondary level, and then the company's intranet VPN was updated once (big exchange, the interface is different),
so at the beginning, I thought it was caused by the network security policy,
after all, all the online updates are pymysql, I'm already up-to-date and can't update any more

In fact, the solution is in a word, too lazy to beat around the bush so many words

uninstall and reload MySQL

yes! You're right! Is the MySQL database to unload, and then re install a version of 8.0 and above

So the main reason is that at the beginning MySQL 8.0 has updated many character sets, but the length of these character sets exceeds 255


Write in the last canvassing session
recently participated in the CSDN official organization of "geek +" original blogger competition
after many screening, finally on the top 50
original is not easy, help cast a free vote
support: Click to vote
thank you!!!