Использование соединителя python mysql-db

Наконец, я смог установить соединитель, как показано ниже:

Как подключиться к MySQL db из python 3 на 16.04

Я включаю результат установки в конце .

Однако, когда я пытаюсь использовать коннектор в некотором коде python3, он не распознает пакет mysqldb?

import mysqldb as mdb

Ошибка, указанная в pycharm:

ModuleNotFoundError: No module named 'mysqldb'

Является ли эта ошибка, потому что я настроил mysqldb в виртуальной среде?

Результаты установки mysqldb:

(env) tom@TP:~/SAT$ sudo apt install python3-mysqldb [sudo] password for tom: Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: linux-headers-4.10.0-28 linux-headers-4.10.0-28-generic linux-headers-4.10.0-37 linux-headers-4.10.0-37-generic linux-image-4.10.0-28-generic linux-image-4.10.0-37-generic linux-image-extra-4.10.0-28-generic linux-image-extra-4.10.0-37-generic Use 'sudo apt autoremove' to remove them. Suggested packages: python-egenix-mxdatetime python3-mysqldb-dbg The following NEW packages will be installed python3-mysqldb 0 to upgrade, 1 to newly install, 0 to remove and 23 not to upgrade. Need to get 39.2 kB of archives. After this operation, 161 kB of additional disk space will be used. Get:1 http://gb.archive.ubuntu.com/ubuntu xenial/main amd64 python3-mysqldb amd64 1.3.7-1build2 [39.2 kB] Fetched 39.2 kB in 0s (343 kB/s) Selecting previously unselected package python3-mysqldb. (Reading database ... 286207 files and directories currently installed.) Preparing to unpack .../python3-mysqldb_1.3.7-1build2_amd64.deb ... Unpacking python3-mysqldb (1.3.7-1build2) ... Setting up python3-mysqldb (1.3.7-1build2) ... (env) tom@TP:~/SAT$ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'MySQLdb' (env) tom@TP:~/SAT$ dpkg --get-selections | grep mysql libmysqlclient-dev install libmysqlclient20:amd64 install mysql-client-5.7 install mysql-client-core-5.7 install mysql-common install mysql-server install mysql-server-5.7 install mysql-server-core-5.7 install python3-mysqldb install (env) tom@TP:~/SAT$ mysql ERROR 1045 (28000): Access denied for user 'tom'@'localhost' (using password: NO) tom@TP:~$ cd SAT tom@TP:~/SAT$ virtualenv -p python3 --system-site-packages tmp/ Running virtualenv with interpreter /home/tom/anaconda3/bin/python3 Using base prefix '/home/tom/anaconda3' New python executable in /home/tom/SAT/tmp/bin/python3 copying /home/tom/anaconda3/bin/python3 => /home/tom/SAT/tmp/bin/python3 copying /home/tom/anaconda3/bin/../lib/libpython3.6m.so.1.0 => /home/tom/SAT/tmp/lib/libpython3.6m.so.1.0 Also creating executable in /home/tom/SAT/tmp/bin/python Installing setuptools, pip, wheel...done. tom@TP:~/SAT$ source env/bin/activate (env) tom@TP:~/SAT$ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'MySQLdb' >>> exit()

(

env) tom@TP:~/SAT$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 Server version: 5.7.20-0ubuntu0.16.04.1 (Ubuntu) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
0
задан 28 December 2017 в 20:09

2 ответа

Он чувствителен к регистру.

$ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import mysqldb Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'mysqldb' >>> import MySQLdb >>>

Установил тот же пакет, что и вы, и, похоже, работает.

Edit: Я пропустил, что вы использовали его в виртуальной среде! Извините.

Чтобы использовать пакеты сайта внутри virtualenv, вам необходимо передать --system-site-packages в virtualenv, например

[~]$ virtualenv -p python3 --system-site-packages tmp/ [~]$ source tmp/bin/activate (tmp) [~]$ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb >>>
1
ответ дан 18 July 2018 в 00:21

Он чувствителен к регистру.

$ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import mysqldb Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named 'mysqldb' >>> import MySQLdb >>>

Установил тот же пакет, что и вы, и, похоже, работает.

Edit: Я пропустил, что вы использовали его в виртуальной среде! Извините.

Чтобы использовать пакеты сайта внутри virtualenv, вам необходимо передать --system-site-packages в virtualenv, например

[~]$ virtualenv -p python3 --system-site-packages tmp/ [~]$ source tmp/bin/activate (tmp) [~]$ python3 Python 3.5.2 (default, Nov 23 2017, 16:37:01) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import MySQLdb >>>
1
ответ дан 24 July 2018 в 17:12
  • 1
    Привет, я пытался с правильным корпусом, но он все еще не работает. Я добавил код ввода и сообщение об ошибке внизу вопроса. – Bazman 28 December 2017 в 19:28
  • 2
    Я также попробовал несколько способов проверить, установлен ли mysql. Я включил эти два в нижней части письма. Первые методы, по-видимому, предполагают, что необходимо установить, в то время как второй метод, похоже, указывает на наличие проблемы с паролем? – Bazman 28 December 2017 в 19:42
  • 3
    Обновлено с некоторой информацией об использовании системных пакетов внутри virtualenv. Другой альтернативный вариант - использовать pip для его установки внутри virtualenv. – vidarlo 28 December 2017 в 19:58
  • 4
    OK Я пробовал это, но, к сожалению, импорт MySQLdb по-прежнему не распознается python 3.5? Однако mysql -u root -p действительно запускает mysql внутри или вне виртуальной среды? Я предполагаю, что это означает, что mysqldb не нужно снова устанавливать пипс внутри (или снаружи) env? – Bazman 28 December 2017 в 20:11
  • 5
    OK получил его работу, используя приведенное здесь решение stackoverflow.com/questions/35190465/… by arcegk. Спасибо за вашу помощь в любом случае. – Bazman 28 December 2017 в 20:53

Другие вопросы по тегам:

Похожие вопросы: