Python连接MySQL数据库

PyMysql模块

使用代码的方式操作数据库称为数据库编程。

安装方式

sudo pip3 install pymysql

使用步骤

  1. 导入pymysql包:import pymysql
  2. 创建连接对象:
    1. 调用pymysql模块中的connect()函数来创建连接对象,conn = connect(参数列表)
      1. 参数host: 连接的mysql主机,如果本机是’localhost’
      2. 参数port: 连接的mysql主机的端口,默认是3306
      3. 参数user: 连接的用户名
      4. 参数password: 连接的密码
      5. 参数database: 数据库的名称
      6. 参数charset: 通信采用的编码方式,推荐使用utf8
    2. 连接对象conn的相关操作
      1. 关闭连接 conn.close()
      2. 提交数据 conn.commit()
      3. 撤销数据 conn.rollback()
  3. 获取游标对象: 获取游标对象的目的就是要执行sql语句,完成对数据的增、删、改、查操作。代码为:cur = conn.cursor()
    1. 使用游标执行SQL语句:execute(operation []parameter) 执行SQL语句,返回受影响的行数,主要用于执行insert、update、delete、select等语句
    2. 获取查询结果集中的一条数据:cur.fetchone() 返回一个元素,如(1,'张三')
    3. 获取查询结果集中的所有数据:cur.fetchall() 返回一个元组,如((1,'张三'),(2,'李四'))
    4. 关闭游标:cur.close(), 表示和数据库操作完成
  4. pymysql完成数据的增删改查操作
    1. 增删改查的sql语句。sql = select * from 数据表
    2. 执行sql语句完成相关数据操作。cur.execute(sql)
  5. 关闭游标和连接
    1. 先关闭游标:cur.close()
    2. 后关闭连接:conn.close()

示例

pymysql查询操作

# 导入pymysql包
import pymysql

# 创建连接对象
conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234',database='python_test_1', charset='utf8')
# 获取游标对象
cur = conn.cursor()
# pymysql完成数据的查询操作
sql = 'select * from students;'
cur.execute(sql) # 受影响的行数
content = cur.fetchone() # 获取一条数据
print(content)
content = cur.fetchall() # 从上一次读取数据的位置开始读
print(content)
# 关闭游标和连接
cur.close()
conn.close()

pymysql增删改操作

# 导入pymysql包
import pymysql

# 创建连接对象
conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234',database='python_test_1', charset='utf8')
# 获取游标对象
cur = conn.cursor()
# 增加数据, 默认开启了事务
# sql = 'insert into students(name) VALUES("老王")'
# cur.execute(sql)

# 删除数据
# sql = 'delete from students where id=6'
# cur.execute(sql)

# 修改数据
sql = 'update students set name="老王" where id=1'
cur.execute(sql)

# pymysql完成数据的查询操作
sql = 'select * from students;'
cur.execute(sql) # 受影响的行数
content = cur.fetchall() # 从上一次读取数据的位置开始读
for i in content:
    print(i)
# 提交操作, 凡是增删改都需要提交
conn.commit()
# 关闭游标和连接
cur.close()
conn.close()

SQL语句参数化