我是一个新的Python开发人员,但在Windows计算机上已成功与Python和MySQL合作。我正在努力在我的新Ubuntu平台上弄清楚这一点(V 16.04(。这是我所做的。
我的机器在USR/BIN中同时安装了Python 2.7和3.5
我安装了此MySQL库
sudo apt-get install python-mysqldb
我没有错误。
我进入Python33并做
import MySQLdb
它给出一个错误,没有名为mysqldb
的模块我进入Python(2.7(
导入工作,我可以进行一些查询。
所以我真的没有得到这些多种版本的Python的情况。我不想在Python 2.7工作。我是否安装了仅在Python 2.7中使用的mySQLDB?
假设图书馆不是正确的库,我去了Oracle MySQL网站,并为我的Ubuntu发行版下载了正确的软件包,然后尝试按照他们的说明进行安装:
sudo dpkg -i mysql-connector-python_2.1.6-1ubuntu16.10_all.deb
这不会安装,因为:
dpkg:关于mysql-connector-python_2.1.6-1.6-1ubuntu16.10_all.deb包含mysql-connector-python: mysql-connector-python与Python-Mysql.connector冲突 python-mysql.connector(2.0.4-1版(存在并安装。
所以现在我陷入困境的第一个软件包仅在Python 2.7中起作用,但现在似乎在干扰安装MySQL-Connector-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开发?我看到有人提到它有错误,而人们使用此Python-MysqldB,但后来我看到了一些提到的,因为它不支持Python3。
因此,在这一点上,我不知道该使用哪个,如何摆脱我安装的错误,如何安装正确的内容。然后最终我想看几行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()
python3仅答案。
Django和MySQL可以使用不同的软件包连接。一个是python3-pymysql
步骤1:运行命令: - sudo apt-get install python3-pymysql
步骤2:创建并激活Python 3虚拟环境
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)
您可以与MySQL-Connector-Python库相连:
1:安装mySQL连接器
`pip install mysql-connector-python`
2:为凭据创建YAML或INI文件(例如verrectials.yml(
`mysql:
username: "<username>"
password: "<password>"
hostname: "<host>"
db: "<databaseName>"`
3:创建用于从MySQL连接的Python类
`import mysql.connector
import yaml
class MySQLConnection:
def __init__(self):
credentials = yaml.load(open("credentials.yml"),
Loader=yaml.FullLoader)
self.host = credentials['mysql']['hostname']
self.user = credentials['mysql']['username']
self.password = credentials['mysql']['password']
self.db = credentials['mysql']['db']
self.conn = mysql.connector.connect(host=self.host,
user=self.user,
password=self.password,
database=self.db)
print("INFO: Database connected!!!")`