专栏首页小一的数据分析之路Python入门进阶教程-数据库操作

Python入门进阶教程-数据库操作

作者:一叶

介绍:放不下灵魂的搬砖者

全文共1635字,阅读全文需7分钟

Python版本3.8.0,开发工具:Pycharm

建议本节在掌握数据库相关操作后再进行学习

准备工作:

MySQL 是最流行的关系型数据库管理系统。本小节通过 Python 对 MySQL 数据库进行增删改查操作,后期高阶可以通过结合 DataFrame 对文件实现快速导入导出操作。

安装 Python 的 MySQL 数据库连接模块

1. 通过pymysql连接数据库
在cmd命令行窗口输入pip3 install pymysql
出现success 表示安装成功

2. 通过connector连接数据库
在cmd命令行窗口输入pip3 install  mysql-connector-python mysql-connector-python
出现success 表示安装成功(亲测成功)

注:

  • 两种方法都可以连接数据库
  • 因为我自己是安装了 Python2 和 Python3,所以 pip 需要写 pip2 还是pip3,如果只安装一个 Python 版本直接 pip install 即可

01

数据库连接

连接数据库表 t_person_info(数据库表提前创建好),并输出所有表数据。 测试用表 t_person_info 有三个字段: id (int 类型,主键且自增), name (varchar 类型,表示姓名), age(int 类型,表示年龄)

通过 pymsql 实现

import pymysql
# 连接数据库
db = pymysql.connect("localhost", "username", "passwd", "test")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute()  方法执行 SQL 查询
cursor.execute("select * from t_person_info")
# 使用 fatchall() 方法获取所有数据.
data = cursor.fetchall()
print(data)
# 关闭数据库
db.close()

# 输出
((1, 'zhangsan', 16), (2, 'lisi', 17), (3, 'wangwu', 15))

通过 connector 实现

import mysql.connector
''''
localhost:连接名称,默认127.0.0.1
user:数据库用户名
passwd:用户名对应密码
port:端口,默认为3306
db:数据库名称
charset:字符编码
'''
conn = mysql.connector.connect(host='localhost', user='username', passwd='passwd',
                               port=3306, db='test', charset='utf8'
                               )
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 使用 execute()  方法执行 SQL 查询
cursor.execute("select * from t_person_info")
# 通过fetchall方法获得数据
data = cursor.fetchall()  
print(data)
# 关闭数据库
db.close()

# 输出
[(1, 'zhangsan', 16), (2, 'lisi', 17), (3, 'wangwu', 15)]

注:

  • 实现的功能相同,当注意返回的结果集类型
  • 在结果之后需要对数据库建立的连接进行关闭

02

开发工具选择

在成功连接数据库之后,通过不同的 sql 语句可实现数据库的增删改查操作

增删改查功能通过 pymysql 建立连接方式后实现,connector 方式同理,不再重复举例

查(查询)

sql = "select * from t_person_info"
# 执行SQL语句
cursor.execute(sql)  
# 使用 fatchall() 方法获取所有数据.
data = cursor.fetchall()
# 使用 fatchall() 方法获取一条数据.
data = cursor.fetchone()
# 使用 fetchmany() 方法获取两条数据.
data = cursor.fetchmany(2)

注:fetch 命令根据移动数据库游标获取数据,例如当前游标在第一位,则 fetchone 命令执行后会获取第一条数据,且游标会移动到第二位,而 fetchall 命令会移动游标到末尾位置。

增(插入)

sql = "INSERT INTO t_person_info (name, age) VALUES (%s, %s)"
val = ('xiaoming', 18)
# 使用 execute()  方法执行 SQL 语句
cursor.execute(sql, val)
# 数据表内容有更新,必须使用该语句
db.commit()

注:插入数据的字段必须和数据库保持一致

改(更新)

# # 更新小明的年龄为20岁
sql = "UPDATE t_person_info SET age=%s WHERE name = %s"
val = (20, 'xiaoming')
# 使用 execute()  方法执行 SQL 语句
cursor.execute(sql, val)
# 数据表内容有更新,必须使用该语句
db.commit()

注:UPDATE 语句要确保指定了 WHERE 条件语句,否则会导致整表数据被更新。

删(删除)

# 删除小明的信息
sql = "DELETE FROM t_person_info WHERE name = %s"
val = ("xiaoming")
cursor.execute(sql, val)
# 数据表内容有更新,必须使用该语句
db.commit()

注:要慎重使用删除语句,删除语句要确保指定了 WHERE 条件语句,否则会导致整表数据被删除。


对于数据库的操作其实也不难,你需要先掌握了解数据库的一些 sql 语句,后面会介绍如何快速将整个表格数据导入导出到数据库。

下节将介绍Python 邮件发送

Python系列

Python 系列会持续更新,从基础入门到进阶技巧,从编程语法到项目实战。若您在阅读的过程中发现文章存在错误,烦请指正,非常感谢;若您在阅读的过程中能有所收获,欢迎一起分享交流。

如果你也想和我一起学习Python,关注我吧!

学习Python,我们不只是说说而已

End

本文分享自微信公众号 - 知秋小梦(little_dream_2019)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于Django的电子商务网站开发(连载34)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 基于Django的电子商务网站开发(连载37)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 测试环境中的隐藏的网络风险及应对?

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 一行代码将Pandas加速4倍

    虽然 panda 是 Python 中用于数据处理的库,但它并不是真正为了速度而构建的。了解一下新的库 Modin,Modin 是为了分布式 panda 的计算...

    石晓文
  • 基于Django的电子商务网站开发(连载35)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 质量管理项目中的测试环境类型

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 基于Django的电子商务网站开发(连载33)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 基于Django的电子商务网站开发(连载36)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 基于Django的电子商务网站开发(连载39)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 基于Django的电子商务网站开发(连载38)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠

扫码关注云+社区

领取腾讯云代金券