Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ubuntu 16上从python 3连接到MySQL数据库_Python_Mysql_Ubuntu - Fatal编程技术网

如何在Ubuntu 16上从python 3连接到MySQL数据库

如何在Ubuntu 16上从python 3连接到MySQL数据库,python,mysql,ubuntu,Python,Mysql,Ubuntu,我是一名新的Python开发人员,但在Windows机器上成功地使用了Python和mysql。在我的新Ubuntu平台(v16.04)上,我很难找到答案。这就是我所做的 我的机器在usr/bin中安装了python2.7和3.5 我安装了这个mysql库 sudo apt-get install python-mysqldb 我没有错 我进入蟒蛇3 做 它给出了一个错误,没有名为MySQLdb的模块 我学习python(2.7) 导入工作正常,我可以做一些查询 所以我不太明白python的多

我是一名新的Python开发人员,但在Windows机器上成功地使用了Python和mysql。在我的新Ubuntu平台(v16.04)上,我很难找到答案。这就是我所做的

我的机器在usr/bin中安装了python2.7和3.5

我安装了这个mysql库

sudo apt-get install python-mysqldb
我没有错

我进入蟒蛇3 做

它给出了一个错误,没有名为MySQLdb的模块

我学习python(2.7)

导入工作正常,我可以做一些查询

所以我不太明白python的多个版本到底是怎么回事。我不想在Python2.7中工作。我是否安装了仅在python 2.7中工作的mysqldb

假设库不是正确的库,我去了Oracle Mysql站点,为我的Ubuntu发行版下载了正确的包,然后按照他们的说明安装它:

sudo dpkg -i mysql-connector-python_2.1.6-1ubuntu16.10_all.deb
无法安装,因为:

dpkg:关于包含mysql连接器python的mysql-connector-python_2.1.6-1ubuntu16.10_all.deb: mysql连接器python与python-mysql.connector冲突 python-mysql.connector(版本2.0.4-1)已存在并已安装

所以现在我遇到了麻烦,第一个包只在Python2.7中工作,但是它的存在现在似乎干扰了mysql连接器python的安装

我试着跑步

sudo apt-get remove python-mysqldb
完成时没有错误。但我的下一次尝试 sudo dpkg-i mysql-connector-python_2.1.6-1ubuntu16.10_all.deb

仍然会以相同的消息失败

所以我对很多事情感到困惑:

当两个python都在我的机器上并且知道它们会影响哪一个(或两者)时安装东西

Oracle的mysql连接器是用于Python 3.5开发的首选连接器吗?我看到一些人提到它有bug,人们使用这个python mysqldb one,但是我看到一些人提到python 3不支持它


所以在这一点上,我不知道该用哪一个,如何摆脱我安装的错误,如何安装正确的。最后,我想看几行python,它们向我展示了如何导入正确的包并测试连接。

我按照建议的指针选择了使用mysqlclient,因为我可能想使用Django,因为与MySQLdb的兼容性似乎很重要——可能是因为它是某种参考python sql驱动程序的实现

不管怎样,我就是这么做的

$sudo apt-get install libmysqlclient-dev
$cd to project dir (myproj)
$virtualenv -p /usr/bin/python3 env
$source env/bin/activate
(env) pip install mysqlclient
(env) deactivate
要使用此python环境,请执行以下操作:

$source env/bin/activate
(env)python3
>>> import MySQLdb
>>> db = MySQLdb.connect(host="localhost", user="u", passwd="secret", db="mydb")
>>> cur = db.cursor()
>>> cur.execute("select * from a-table")
>>> for row in cur.fetchall():
       print(row[0])
>>> db.close()

我遵循建议的指针,选择使用mysqlclient,因为我可能想使用Django,而且与MySQLdb的兼容性似乎很重要——可能是因为它是python sql驱动程序的某种参考实现

不管怎样,我就是这么做的

$sudo apt-get install libmysqlclient-dev
$cd to project dir (myproj)
$virtualenv -p /usr/bin/python3 env
$source env/bin/activate
(env) pip install mysqlclient
(env) deactivate
要使用此python环境,请执行以下操作:

$source env/bin/activate
(env)python3
>>> import MySQLdb
>>> db = MySQLdb.connect(host="localhost", user="u", passwd="secret", db="mydb")
>>> cur = db.cursor()
>>> cur.execute("select * from a-table")
>>> for row in cur.fetchall():
       print(row[0])
>>> db.close()
蟒蛇3号是唯一的答案

Django和MySQL可以使用不同的包进行连接。 一人

步骤1: 运行以下命令:-
sudo-apt-get-install-python3-pymysql

步骤2: 创建并激活Python3虚拟环境

If you are using virtualenv
    $ `virtualenv -p python3 venv`
    $ `source venv/bin/activate`
    $ `pip install pymysql`

If you are using virtualenvwrapper
    $ `mkvirtualenv venv --python=/usr/bin/python3`
    $ `pip install pymysql`
步骤3: 导入包并测试连接

 $ python
 >>> import pymysql
 >>> conn = pymysql.connect("localhost", "root", "password", "test_db")
 >>> x = conn.cursor()
 >>> sql = """SELECT * FROM `table1`"""
 >>> x.execute(sql)
蟒蛇3号是唯一的答案

Django和MySQL可以使用不同的包进行连接。 一人

步骤1: 运行以下命令:-
sudo-apt-get-install-python3-pymysql

步骤2: 创建并激活Python3虚拟环境

If you are using virtualenv
    $ `virtualenv -p python3 venv`
    $ `source venv/bin/activate`
    $ `pip install pymysql`

If you are using virtualenvwrapper
    $ `mkvirtualenv venv --python=/usr/bin/python3`
    $ `pip install pymysql`
步骤3: 导入包并测试连接

 $ python
 >>> import pymysql
 >>> conn = pymysql.connect("localhost", "root", "password", "test_db")
 >>> x = conn.cursor()
 >>> sql = """SELECT * FROM `table1`"""
 >>> x.execute(sql)

这个问题似乎在这里得到了解决,在另一个线程上可能有一些有用的帮助。对使用Python3的各种mysql库提出了建议。所有这些都参考了它们与MySQLdb的兼容性。为什么这很重要?MySQLdb是某种标准吗?我可以得到一些关于如何清除我安装的MySQLdb包的建议吗,这样我就可以尝试安装类似oracle的mysql连接器之类的东西了?最后,对于一个用户不多、速度要求不高的小型网站,有人能推荐一个最容易使用且文档记录合理的库吗?这个问题似乎在这里得到了解决,因为在另一个线程上可能有一些有用的帮助。对使用Python3的各种mysql库提出了建议。所有这些都参考了它们与MySQLdb的兼容性。为什么这很重要?MySQLdb是某种标准吗?我可以得到一些关于如何清除我安装的MySQLdb包的建议吗,这样我就可以尝试安装类似oracle的mysql连接器之类的东西了?最后,对于一个用户不多、速度要求不高的小型网站,有人能推荐一个最容易使用且文档记录合理的库吗?