如何使用python连接mysql数据库

我以前经历过这个。
记得1 5 年前,我刚刚接了一个项目,后端都是MySQL数据库。
当时,我们使用的是pymysql,从未见过mysql-connector-python。

In[1 ]: from import pymysql Connect
In[2 ]: cnx = connect(host="1 7 2 .1 6 .1 9 2 .1 00", port=3 3 06 , user="appuser", password="xxxxxx")
代码看起来很简单吧?但有一次,在线数据库突然无法连接。
检查了半天,发现是网络问题,没有建立TCP连接。
我当时就一头雾水,参数明明是对的。

查了资料后,我发现你说的这个过程非常重要。
您必须了解 MySQL 协议。
当时我们团队里有一个兄弟专门研究这个协议。
他得看握手包和服务器返回的响应包。
例如,他告诉我,有时用户名和密码是正确的,但服务器会返回错误代码,说权限不足。
这取决于错误代码是什么。

再比如,SSL连接请求包取决于你的客户端和服务端是否支持SSL,参数中是否需要添加ssl_ca、ssl_cert、ssl_key。
2 01 5 年的时候,我们服务器上的 SSL 尚未启用。
结果哥哥提醒我,不然客户端发SSL请求包,服务器就干脆不理你,直接断开连接。

所以如果你问这背后的流程,你需要了解MySQL协议。
否则,有时光看表面代码很难发现问题。
当时我们改变了一个参数,就是服务器版本号。
结果客户端无法连接。
检查了半天,发现协议版本不兼容,只好改客户端代码。

总之,对于这件事,不能只看代码。
你需要了解协议,还需要了解网络。
当时我对互联网方面不太了解,这几乎拖慢了速度。

怎么做才能使mysql和python连接起来

PyMySQL 是一个库。

在Python3 .x中使用。

连接到MySQL服务器。

像 MySQLdb。
Python数据库APIv2 .0的


它是一个纯Python客户端。

安装:
使用pip3
命令是 $ pip3 install PyMySQL。

或git。

使用 $ git 克隆 https://github.com/PyMySQL/PyMySQL。

Re$ cd PyMySQL。

Re$ python3 setup.py 安装程序。

版本号规范:
使用curl。

命令是 $curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X |取xz。

Re$ cd PyMySQL。

Re$ python3 setup.py 安装程序。

删除 PyMySQL 目录。

需要root权限。

可能的错误:
导入错误:没有名为 setuptools 的模块。

这意味着安装工具没有安装。

前往https://pypi.python.org/pypi/setuptools查找该方法。

Linux安装:
使用wget。

命令是 $wget https://bootstrap.pypa.io/ez_setup.py。

$python3 ez_setup.py。

用例:
首先是数据库 TESTDB。

有一张桌子已雇用。

字段为 FIRST_NAME、LAST_NAME、AGE、SEX、INCOME。

用户名“testuser”。

密码“test1 2 3 ”。

使用root。

经格兰特授权。

Python脚本:
!/usr/bin/python3
import pymysql
Connection
db = pymysql.connect("localhost", "testuser", "test1 2 3 ", "TESTDB")
Cursor
cursor = db.cursorery()
cursor VERSION()")
data =cursor.fetchone()
print("数据库版本:", data)
关闭
创建表:
递归。

如果存在则删除表:
DROP TABLE IF EXISTS EMPLOYEE
创建表:""CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(2 0) NOT NULL, 姓氏字符(2 0), 年龄INT, 六个字符(1 ), INCOME FLOAT)"""
cursor.execute(sql)
插入:
!/usr/bin/python3
import pymysql
db = pymysql.connect("localhost", "testuser", "test1 2 3 ", "TESTDB")
cursorl(db.cursorl)
cursorl( INTO EMPLOYEE(FIRST_NAME, 姓氏、年龄、性别、收入) VALUES ('Mac', 'Mohan', 2 0, 'M', 2 000)"""
尝试:
cursor.execute(sql)
db.commit()
例外:
db.rollback()
db.close()
查询:
honr/bin/imtus3 /bin ! pymysql
db = pymysql.connect("localhost", "testuser", "test1 2 3 ", "TESTDB")
cursor = db.cursor()
sql = "SELECT FROM EMPLOYEES WHERE INCOME > %s"
try:
cursor.execute(s0l))(1 0q0l)cursor.fetchall()
for row in results:
fname =行[0]
lname = 行[1 ]
年龄 = 行[2 ]
性别 = 行[3 ]
收入 = 行[4 ]
print("fname=%s, lname=%s, 年龄=%s, 性别%=%s" (fname, lname, 年龄, 性别, 收入))
除了:
print("错误: 无法检索数据")
db.close()
更新:
!/usr/bin/python3
import pymysql
db = pymysql.connect("3 user", "test "test1 userhost", "TESTDB")
cursor = db.cursor()
sql = "UPDATE EMPLOYEE AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
尝试:
cursor.execute(sql)
db.commit()
例外:
db.rollback()
db.close()
删除:
!/usr/bin/python3
import pymysql
db = pymysql.connect("localhost", "testuser", "test1 2 3 ", "TESTDB")
cursor = db.EEDELEYqROM() WHERE AGE > %s"
尝试:
cursor.execute(sql, (2 0))
db.commit()
例外:
db.rollback()
db.close()
事务:
提交或回滚。

确保数据一致性。

有酸。

原子。

一致性。

绝缘。

耐力。

使用光标。

提交提交。

倒回。

错误处理:
有不同的错误。

警告。

错误。

接口错误。

数据库错误。

数据错误。

操作错误。

完整性错误。

内部错误。

编程错误。

不支持错误。

算了。