MySQLdb è un sottile wrapper Python attorno al modulo C che implementa l'API per il database MySQL.
C'era la versione MySQLDb1 del wrapper usata qualche tempo fa e ora è considerata un'eredità. Quando MySQLDb1 ha iniziato a evolversi in MySQLDb2 con correzioni di bug e supporto per Python3, è stato eseguito il fork di MySQLDb1 ed ecco come è apparso mysqlclient , con correzioni di bug e supporto Python3. Riassumendo, ora abbiamo MySQLDb2 che non è pronto per l'uso in produzione, MySQLDb1 come driver obsoleto e mysqlclient supportato dalla comunità con correzioni di bug e supporto Python3.
Ora, per risolvere questo pasticcio, MySQL fornisce la propria versione dell'adattatore MySQL: connettore mysql , un modulo Python all-in che utilizza l'API MySQL senza dipendenze di moduli C e solo moduli Python standard utilizzati.
Quindi ora la domanda si riduce a: mysqlclient vs mysql connector.
Per quanto mi riguarda, sceglierei una libreria ufficialmente supportata, tuttavia mysqlclient
dovrebbe essere anche una buona scelta. Entrambi vengono aggiornati attivamente con correzioni e nuove funzionalità che puoi vedere dai commit attivi negli ultimi giorni.
Nota: non avevo molta esperienza con loro, quindi potrebbero esserci casi in cui l'uno o l'altro non soddisfa le tue esigenze. Entrambe le librerie seguono lo standard PEP-249 , il che significa che dovresti stare bene con almeno le funzionalità di base ovunque.
Installazione e dipendenze
Come fork del wrapper C, richiede che i moduli C funzionino con MySQL che aggiunge file di intestazione python per creare queste estensioni (leggi python-dev). L'installazione dipende dal sistema che usi, assicurati solo di conoscere i nomi dei pacchetti e di poterli installare.