当前位置:   article > 正文

Python通过pymysql连接数据库并进行增删改查_python数据库增删改查的库

python数据库增删改查的库

1. 前言

 哈喽,大家好,我是小K,今天咋们分享的内容是:Python中如何通过pymysql模块连接数据库 

相信大家都已经学过Mysql啦,对基础的增删改查都已经了如指掌了。

但是,你可能还不会Python如何连接数据库并进行增删改查 ,那么本篇文章带你学会如何通过Python连接数据库 

2. 准备

Python版本:3.8

pymysql版本:1.0.2

先进行安装pymysql

pip install pymysql

如果觉得慢的话,可以加上国内的源:

pip install -i https://pypi.doubanio.com/simple pymysql==1.0.2

 3. 建立连接

 这就是基本的连接代码:

  1. import pymysql
  2. def get_connection():
  3. conn = pymysql.connect(
  4. host='localhost',
  5. user='root',
  6. password='5201314',
  7. database='java-test',
  8. charset='utf8'
  9. )
  10. cursor = conn.cursor() # 获取游标
  11. cursor.close() # 关闭游标
  12. conn.close() # 关闭连接
  13. if __name__ == '__main__':
  14. get_connection()

 现在,我们来看每一个参数:

host: 主机地址(localhost代表本地 , 127.0.0.1也代表本地)

user: 用户名

password: 密码

database: 数据库名

charset: 字符集(这里需要注意一下,在mysql中是utf8 , 而不是utf-8)

这是建立sql游标cursor

游标(Cursor)是用来执行 SQL 语句并处理查询结果的对象。它提供了一种在 Python 中与数据库进行交互的方式,允许你执行 SQL 查询、获取查询结果以及处理结果集。

ok, 现在我们来测试,是否连接成功

4. 测试连接成功

  1. import pymysql
  2. def get_connection():
  3. try:
  4. conn = pymysql.connect(
  5. host='localhost',
  6. user='root',
  7. password='52013144',
  8. database='java-test',
  9. charset='utf8'
  10. )
  11. cursor = conn.cursor() # 获取
  12. # 游标
  13. # 执行 SQL 查询
  14. cursor.execute('SELECT VERSION()')
  15. # 获取查询结果
  16. db_version = cursor.fetchone()
  17. print(f'Database version: {db_version[0]}')
  18. cursor.close() # 关闭游标
  19. conn.close() # 关闭连接
  20. except pymysql.MySQLError as e:
  21. print(e)
  22. if __name__ == '__main__':
  23. get_connection()

 进行测试,查看当前数据库版本

先来错误的密码看看:

再来正确的:

5. 增删改查

先来创建一张表,通过sql语句:

这是在mysql中创建的语句:

  1. create table info(
  2. id int primary key auto_increment,
  3. user varchar(10) not null,
  4. pwd varchar(10)
  5. );

5.1 增

5.1.1 方法1

  1. # 链接数据库
  2. import pymysql
  3. def get_connection():
  4. try:
  5. conn = pymysql.connect(
  6. host='localhost',
  7. user='root',
  8. password='5201314',
  9. database='java-test',
  10. charset='utf8'
  11. )
  12. cursor = conn.cursor() # 获取
  13. # 游标
  14. # 执行 SQL 查询
  15. cursor.execute('SELECT VERSION()')
  16. # 获取查询结果
  17. db_version = cursor.fetchone()
  18. print(f'Database version: {db_version[0]}')
  19. cursor.execute('insert into info (user,pwd) values ("jiaoxingk", "12dd");')
  20. conn.commit()
  21. cursor.close() # 关闭游标
  22. conn.close() # 关闭连接
  23. except pymysql.MySQLError as e:
  24. print(e)
  25. if __name__ == '__main__':
  26. get_connection()

这里需要注意,一定要提交才行

5.1.2 方法2

  1. sql = "insert into info (user,pwd) values ('%s', '%s');" %('kk' , '1231')
  2. cursor.execute(sql)

这种方法,可以动态传入一些变量参数

5.1.3 方法3

  1. sql = "insert into info (user,pwd) values (%s, %s);"
  2. cursor.execute(sql , ('diaomao' , '23123'))
  3. conn.commit()

需要注意:方法2的%s有引号,方法3的%s没有引号 ,这是因为使用这种方式,会把引号当成普通的数据写入到数据库中!

 5.1.4 方法4

这是多条插入的方法:

  1. info_list = [('jiaoxik{}'.format(i), 'ddwass{}'.format(i)) for i in range(5, 101)]
  2. sql = "insert into info (user,pwd) values (%s, %s);"
  3. cursor.executemany(sql , info_list)
  4. conn.commit()

 

5.2 删

  1. sql = 'delete from info where user = %s;'
  2. cursor.execute(sql , 'jiaoxingk')
  3. conn.commit()

5.3 改

  1. sql = 'update info set user = %s where user = %s;'
  2. cursor.execute(sql , ('jiaoxingk','kk'))

5.4 查

  1. cursor = conn.cursor() # 获取游标
  2. sql = 'select id, user, pwd from info;'
  3. rows = cursor.execute(sql)
  4. print(rows)
  5. conn.commit()

如果直接打印返回值rows,得到的是所有记录的条数

想要得到记录内容可以使用fetch系列:

fetchone

一条一条取

  1. cursor = conn.cursor() # 获取游标
  2. sql = 'select id, user, pwd from info;'
  3. cursor.execute(sql)
  4. print(cursor.fetchone())
  5. print(cursor.fetchone())
  6. conn.commit()

fetchmany

默认从开始取指定条数。

  1. cursor = conn.cursor() # 获取游标
  2. sql = 'select id, user, pwd from info;'
  3. cursor.execute(sql)
  4. print(cursor.fetchmany(3)) # 默认从开始取指定条数
  5. conn.commit()

fetchall

取所有

  1. cursor = conn.cursor() # 获取游标
  2. sql = 'select id, user, pwd from info;'
  3. cursor.execute(sql)
  4. print(cursor.fetchall())
  5. conn.commit()

控制返回值

如果你每次看打印结果的话,结果都是以元组套元组的形式返回。

  1. cursor = conn.cursor()
  2. cursor.execute('select * from info;')
  3. print(cursor.fetchmany(2)) # ((7, 'jiaoxingk', '1231'), (8, 'jiaoxingk', '1231'))

我们也可以控制返回形式,比如以列表套字典的形式:

  1. from pymysql.cursors import DictCursor
  2. cursor = conn.cursor(cursor=DictCursor) # 需要在实例化游标对象的时候,传个参数
  3. cursor.execute('select * from info;')
  4. print(cursor.fetchmany(2)) # [{'id': 7, 'user': 'jiaoxingk', 'pwd': '1231'}, {'id': 8, 'user': 'jiaoxingk', 'pwd': '1231'}]
  5. conn.commit()

scroll

先来看相对定位,根据当前的游标位置移动。

  1. cursor = conn.cursor(cursor=DictCursor)
  2. cursor.execute('select * from info;')
  3. print(cursor.fetchone()) # 此时游标在第一行
  4. cursor.scroll(1, 'relative') # 光标按照相对位置移动一位,此时在2
  5. print(cursor.fetchone()) # 取第3行记录
  6. conn.commit()
  7. cursor.close()
  8. conn.close()

接下来看绝对定位:

  1. cursor = conn.cursor(cursor=DictCursor)
  2. cursor.execute('select * from info;')
  3. print(cursor.fetchone()) # 此时游标在第一行
  4. cursor.scroll(1, 'absolute') # 光标按照绝对位置移动一位,此时在1
  5. print(cursor.fetchone()) # 取第2行记录
  6. conn.commit()
  7. cursor.close()
  8. conn.close()

6. 最后

好啦,今天的分享就到这里了。

通过pymysql我们能成功在python环境下连接数据库,并进行增删改查

在后续使用时,如果遇到需要在Python代码里保存数据库操作的话,那么这个方法无疑是最佳的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/750455
推荐阅读
相关标签
  

闽ICP备14008679号