MySQL Python连接器使Python程序能够访问MySQL数据库,连接器使用符合 Python数据库API规范的API。API是用纯Python编写的,除了Python标准库之外没有任何依赖项。连接器提供完全支持:
MySQL功能
使用TCP / IP套接字的连接和使用Unix套接字的Unix连接。
使用SSL保护TCP / IP连接。
独立驱动。连接器不需要MySQL客户端库或标准库外的任何Python模块。
要求
MySQL 5.7.12或更高版本,启用了X插件
Python 2.7或> = 3.4
Protobuf C ++(版本> = 2.6.0)
Python Protobuf(版本> = 3.0.0)
使用MSI包在Microsoft Windows上安装
要完成安装操作,可能需要root或管理员权限。
在系统上安装Python发行版之前,请在Windows%PATH%设置(路径环境变量)中启用python.exe,或者手动将其添加到(如果未启用)。
使用Python连接器连接到MySQL
以下示例显示如何连接和处理MySQL服务器的错误。connect()构造函数创建与MySQL服务器的连接并返回MySQL Connection对象。在示例代码中,它存储在变量’db’中。
#!/usr/bin/python
import MySQL.connector
from MySQL.connector import errorcode
try:
db = MySQL.connector.connect(user='root', password='datasoft123',
host='127.0.0.1', database='sakila')
except MySQL.connector.Error as err:
if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:
print("Acess denied/wrong user name or password")
elif err.errno == errorcode.ER_BAD_DB_ERROR:
print("Database does not exists")
else:
print(err)
else:
db.close()
使用Python连接器查询数据
我们想得到薪水大于所有部门平均工资的员工的姓名(first_name,last_name)和薪水。
'hr’数据库的结构:
SQL代码:
SELECT b.first_name,b.last_name
FROM employees b
WHERE NOT EXISTS (SELECT 'X' FROM employees a WHERE a.manager_id = b.employee_id);
让我们在Python中执行上面的代码:
#!/usr/bin/python
import MySQL.connector
db = MySQL.connector.connect(host="localhost", # Host, usually localhost
user="root", # your username
password="**********", # your password
db="hr") # name of the data base
#create a Cursor object.
cur = db.cursor()
# Write SQL statement here
cur.execute("SELECT b.first_name,b.last_name FROM employees b WHERE NOT EXISTS (SELECT 'X' FROM employees a WHERE a.manager_id = b.employee_id);")
# print all the first and second cells of all the rows
for row in cur.fetchall() :
print (row[0],row[1])
部分输出: