python 操作 MySQL示例

使用 pymysql 操作 mysql 数据库,数据库的创建,表的创建,以及数据的增删改查

安装

安装不复杂,直接使用 pip 安装即可

python -m pip install pymysql

使用

下面是一个完整操作数据库的例子,其中包括

  • 创建一个数据库连接,可选择是否直接操作的需要数据库,若不指定,需要执行 user databse; 类似的来指定需要的数据库,当然也可以用这个语句切换数据库
  • 在连接的基础上取一个游标对象 cursor
  • 通过 cursor 执行 (execute()) sql 语句来达到操作数据库的目的
    • 插入、更新、删除操作需要额外的 commit() 操作,事务级操作支持 rollback()
    • 查询需要对返回结果 (查询到的数据数量) 进行判断,再结合 fetchone()fetchmany(size=None)fetchall() 获取到查询的数据,结合实际情况自定义操作
  • 最后不要忘记关闭连接

示例:

import pymysql

localhost = '192.168.1.161'
localport = 3306
username = 'root'
pwd = 'ubuntu123'

# connect mysql
# 直接连接数据库 conn = pymysql.connect(host=localhost, port=3306, user=username, password=pwd, database="school", charset="utf8")
conn = pymysql.connect(host=localhost, port=localport, user=username, password=pwd,charset="utf8")

# cursor  主要用来执行命令和接收返回值
cursor = conn.cursor()

# 创建名为'school'数据库
cdbret = cursor.execute("CREATE DATABASE if not exists school")

# 切换到需要使用的数据库
cursor.execute("use school")

# 在'school'中创建名为'school'的表
createtableret = cursor.execute("CREATE TABLE if not exists `school_info` (\
    `id` BIGINT(20) NOT NULL AUTO_INCREMENT,\
    `name` VARCHAR(64) DEFAULT NULL COMMENT '学校名称',\
    `starttime` INT(11) DEFAULT NULL COMMENT '创建日期',\
    `location` VARCHAR(64) DEFAULT NULL COMMENT '地理位置',\
    PRIMARY KEY (`id`)\
    ) ENGINE=INNODB DEFAULT CHARSET=utf8 ")

name = '北京大学'
starttime = 1898
location = '北京'
# 插入操作 execure 的返回值是受影响的行数
insertsql = "INSERT INTO `school_info`(`name`,  `starttime`, `location`) VALUES ('{}', '{}', '{}')".format( name, starttime, location)

try:
    insertret = cursor.execute(insertsql)
    # 插入、更新、删除操作需要提交至数据库连接执行
    conn.commit()
except:
    conn.rollback()

# 查询操作
queryret = cursor.execute("SELECT * FROM `school_info`")
if queryret:
    print("find {} datas".format(queryret))

# 处理返回值需要使用 cursor.fetchone() cursor.fetchmany(self.size=None) cursor.fetchall()
data = cursor.fetchone()
print("one data {}".format(data))

# 退出时需要关闭cursor和conn
cursor.close()
conn.close()

总结

整个使用下来 pymysql 的操作不是很复杂,sql 语句和我们命令行下进入 mysql 后的命令语句没有任何差别,算是一款很简单实用的工具了~