Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è la differenza tra MySQLdb, mysqlclient e MySQL Connector/Python?

MySQLdb è un sottile wrapper Python attorno al modulo C che implementa l'API per il database MySQL.

C'era MySQLDb1 versione di 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, un MySQLDb1 è stato biforcato ed ecco come mysqlclient apparso, con correzioni di bug e supporto per Python3. Riassumendo, ora abbiamo MySQLDb2 che non è pronto per l'uso in produzione, MySQLDb1 come driver obsoleto e un mysqlclient supportato dalla community con correzioni di bug e supporto per 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 con nessuna dipendenza dai moduli C e solo moduli Python standard utilizzati.

Quindi ora la domanda si riduce a:mysqlclient vs mysql connector.

Per quanto mi riguarda, andrei con la libreria ufficialmente supportata, tuttavia mysqlclient dovrebbe essere anche una buona scelta. Entrambi sono stati attivamente aggiornati con correzioni e nuove funzionalità che puoi vedere dai commit attivi negli ultimi giorni.

Nota:non ho molta esperienza con loro, quindi potrebbero esserci casi in cui l'uno o l'altro non soddisfa le tue esigenze. Entrambe le librerie seguono PEP-249 standard, il che significa che dovresti avere almeno funzionalità di base ovunque.

Installazione e dipendenze

  • mysqlclient

Come fork del wrapper C richiede moduli C per funzionare con MySQL che aggiunge file di intestazione Python per creare queste estensioni (leggi python-dev). L'installazione dipende dal sistema che utilizzi, assicurati solo di conoscere i nomi dei pacchetti e di poterli installare.