python怎么连接mysql数据库
2020-10-28 · MySQL开源数据库领先者
在 Python 语言环境下我们这样连接数据库。
In [1]: from mysql import connector
In [2]: cnx = connector.connect(host="172.16.192.100",port=3306,user="appuser",password="xxxxxx")
但是连接数据库的背后发生了什么呢?
答案
当我们通过驱动程序(mysql-connector-python,pymysql)连接 MySQL 服务端的时候,就是把连接参数传递给驱动程序,驱动程序再根据参数会发起到 MySQL 服务端的 TCP 连接。当 TCP 连接建立之后驱动程序与服务端之间会按特定的格式和次序交换数据包,数据包的格式和发送次序由 MySQL 协议 规定。MySQL 协议:https://dev.mysql.com/doc/internals/en/client-server-protocol.html整个连接的过程中 MySQL 服务端与驱动程序之间,按如下的次序发送了这些包。
MySQL 服务端向客户端发送一个握手包,包里记录了 MySQL-Server 的版本,默认的授权插件,密码盐值(auth-data)。
2. MySQL 客户端发出 ssl 连接请求包(如果有必要的话)。
3. MySQL 客户端发出握手包的响应包,这个包时记录了用户名,密码加密后的串,客户端属性,等等其它信息。
4. MySQL 服务端发出响应包,这个包里记录了登录是否成功,如果没有成功也会给出错误信息。
python2.X 使用 MySQLdb(python3.X 使用 pymysql)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import MySQLdb
#连接数据库
conn= MySQLdb.connect(
host='localhost',
port = 8080,
user='root',
passwd='123456',
db ='db_test',
)
cur = conn.cursor()
#创建数据表
#cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
#插入一条数据
#cur.execute("insert into student values('2','Tom','3 year 2 class','9')")
#修改查询条件的数据
#cur.execute("update student set class='3 year 1 class' where name = 'Tom'")
#删除查询条件的数据
#cur.execute("delete from student where age='9'")
cur.close()
conn.commit()
conn.close()
# -*-encoding: utf-8 -*-
import os, string, sys, MySQLdb
# Connect Database
try:
conn = MySQLdb.connect(host='localhost',port=3306, user='Username, passwd='Password', db='testdatabase')
except Exception, e:
print e
sys.exit()
# Acquire cursor
cursor = conn.cursor()
# Create table
sql = "create table if not exists test1(name varchar(64) primary key, Year int(4))"
cursor.execute(sql)
print "Created table testtable!"
# Close Connection
cursor.close()
conn.close()