sql >> Databáze >  >> RDS >> Mysql

Jak nainstalovat MySQLdb (Knihovna pro přístup k datům Pythonu do MySQL) na Mac OS X?

Aktualizace pro uživatele Python3: Můžete jednoduše použít conda install mysqlclient k instalaci knihoven potřebných k používání MySQLdb tak, jak v současnosti existuje. Následující otázka SO byla užitečným vodítkem:Python 3 ImportError:Žádný modul s názvem 'ConfigParser' . Instalace mysqlclient nainstaluje mysqlclient, mysql-connector a llvmdev (přinejmenším na můj počítač nainstaloval tyto 3 knihovny).

Zde je příběh mých nesourodých zkušeností s tímto problémem. Rád bych to viděl upravený nebo zobecněný, pokud s tím máte lepší zkušenosti... aplikujte trochu toho TAK kouzla.

Poznámka:Komentáře v dalším odstavci se vztahují na Snow Leopard, ale ne na Lion, který zřejmě vyžaduje 64bitové MySQL

Za prvé, autor (stále?) MySQLdb říká zde že jedním z nejzhoubnějších problémů je, že OS X je nainstalovaný s 32bitovou verzí Pythonu, ale většina průměrných joeů (včetně mě) pravděpodobně skočí na instalaci 64bitové verze MySQL. Špatný krok... odeberte 64bitovou verzi, pokud jste ji nainstalovali (pokyny k této nešikovné úloze jsou k dispozici na SO zde ), poté si stáhněte a nainstalujte 32bitovou verzi (balíček zde )

Existuje mnoho podrobných kroků, jak sestavit a nainstalovat knihovny MySQLdb. Často mají jemné rozdíly. Toto se mi zdálo nejoblíbenější a poskytlo funkční řešení. Zreprodukoval jsem to s několika úpravami níže

Krok 0: Než začnu, předpokládám, že máte MySQL, Python a GCC nainstalovaný na počítači Mac.

Krok 1: Stáhněte si nejnovější adaptér MySQL pro Python ze SourceForge.

Krok 2: Rozbalte svůj stažený balíček:

tar xzvf MySQL-python-1.2.2.tar.gz

Krok 3: Uvnitř složky vyčistěte balíček:

sudo python setup.py clean

NĚKOLIK KROKŮ NAVÍC (z tohoto komentáře )

Krok 3b: Odstraňte vše z vašeho adresáře MySQL-python-1.2.2/build/* – nevěřte „python setup.py clean“, že to udělá za vás

Krok 3c: Odeberte vejce pod Users/$USER/.python-eggs

Krok 4: Původně vyžadovala úprava _mysql.c, ale nyní JIŽ NENÍ NUTNÁ. Zdá se, že komunita MySQLdb již tuto chybu opravila.

Krok 5: Vytvořte symbolický odkaz pod lib, který bude odkazovat na podadresář s názvem mysql. Toto je místo, kde hledá během kompilace.

sudo ln -s /usr/local/mysql/lib /usr/local/mysql/lib/mysql

Krok 6: Upravte soubor setup_posix.py a změňte následující

mysql_config.path ="mysql_config"

do

mysql_config.path ="/usr/local/mysql/bin/mysql_config"

Krok 7: Ve stejném adresáři znovu sestavte svůj balíček (ignorujte varování, která jsou s ním dodávána)

sudo python setup.py build

Krok 8: Nainstalujte balíček a máte hotovo.

sudo python setup.py install

Krok 9: Vyzkoušejte, jestli to funguje. Funguje to, pokud můžete importovat MySQLdb.

python

>>> import MySQLdb

Krok 10: Pokud se při pokusu o import zobrazí chyba se stížností, že Library not loaded: libmysqlclient.18.dylib končící na:Reason: image not found musíte vytvořit jeden další symbolický odkaz, který je:

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Poté byste měli být schopni import MySQLdb bez jakýchkoli chyb.

Posledním zádrhelem však je, že pokud spustíte Python z adresáře sestavení, zobrazí se tato chyba:

/Library/Python/2.5/site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.py:3:UserWarning:Modul _mysql byl již importován z /Library/Python/2.5/ site-packages/MySQL_python-1.2.3c1-py2.5-macosx-10.5-i386.egg/_mysql.pyc, ale XXXX/MySQL-python-1.2.3c1 se přidává do sys.path

To je pro Google docela snadné, ale abyste si ušetřili potíže, skončíte zde (nebo možná ne... není to nijak zvlášť odolná adresa URL) a zjistěte, že musíte cd .. out of build directory a chyba by měla zmizet.

Jak jsem napsal nahoře, rád bych viděl tuto odpověď zobecněnou, protože existuje mnoho dalších konkrétních zkušeností s tímto hrozným problémem. Upravte nebo poskytněte vlastní, lepší odpověď.



  1. Jak vytvořím a dotazuji propojené databázové servery v SQL Server?

  2. SQL Server LIKE obsahující znaky hranatých závorek

  3. Vytvořte databázi v SQLite

  4. Jak udělit všechna oprávnění uživateli root v MySQL 8.0