python程序中使用MySQL数据库


1、python中使用MySQL数据库需要借助第三方模块 pymysql(pip install pymysql)

2、pymysql本质是一个套接字客户端软件,在python 程序中使用pymysql对象链接服务器端

1 pymysql连接数据库

#方式1:
import pymysql
#step1 链接
conn = pymysql.connect(
                        host="localhost",
                        user="root",
                        password="123",
                        db="myschool",
                        charset="utf8")
cursor = conn.cursor()                  #step2 拿游标
sql = "select * from class;"            #step3 拼接sql语句
res1 = cursor.execute(sql)              #step4 调用execute()执行sql语句
print(res1)                             #res不是查询的数据结果,而是查到数据的行数
#step5 得到查询数据
res2 = cursor.fetchone()                #fetchone返回查到第一行数据,以元组的形式返回
res3 = cursor.fetchmany(2)              #fetchmany(n) 返回查到的接着n条记录
res4 = cursor.fetchall()                #fetchall() 返回剩下所有的数据记录

cursor.close()          #step6 #关闭游标
conn.close()            #step7 #关闭客户端链接

1、方式1清楚地列出了使用pymysql连接数据库的主要步骤

2、当使用查询操作时,查询的数据需要使用 fetchone()等函数获得,返回元组形式的结果

3、使用增、删、改操作时,涉及到拼接sql语句时的字符串引号问题,需要注意sql注入问题

4、此外,还有第二种连接方式,用字典进行连接参数的管理,这样子更优雅

#方式2:
import pymysql.cursors

config = {
    'host': '127.0.0.1',
    'port': 3306,
    'user': 'root',
    'password': 'root',
    'db': 'myschool',
    'charset': 'utf8' }

conn = pymysql.connect(**config)        #step1 创建连接

#cursor = conn.cursor()                 #step2 创建游标方式1
with conn.cursor() as cursor:           #创建游标方法2 不需要再手动关闭游标

    sql = "select * from class;"        #step3 拼接sql语句
    cursor.execute(sql)                 #step4 执行sql语句
    res = cursor.fetchall()             #step5 得到查询数据
    print(res)

conn.close()                        #step6 关闭连接,释放内存

2 sql 注入

sql注入现象见:https://www.cnblogs.com/linhaifeng/articles/7525619.html#_label3

1、通过前端的表单提交的数据中携带sql语句, 欺骗服务器, 在后端对数据进行存储时, 执行恶意的sql语句

2、比如在使用pymysql操作数据库是使用字符串拼接生产sql语句, 就会出现sql注入漏洞

3、使用pymysql时, 不要自己拼接字符串, 而是使用execute方法, pymysql模块已经对提交的数据做了处理, 不会出
现sql注入

3 增删改查操作

1、查主要使用的是execute()和fetchone()系列函数

2、增删改主要使用的是execute()和commit()函数

#示例1:查
import pymysql
conn = pymysql.connect(host="localhost",user="root",password="123",
                       db="myschool",charset="utf8")
cursor = conn.cursor()

sql = "select * from student;"
res = cursor.execute(sql)
data = cursor.fetchall()  #fetchone()\fetchmany(size)
print(data)
cursor.close()
conn.close()

3、需要注意的一点是,不要自己拼接sql语句的字符串、使用在execute中传参的方式

#示例2:增
import pymysql
conn = pymysql.connect(host="localhost",user="root",password="123",
                       db="myschool",charset="utf8")
cursor = conn.cursor()

#方式1
sql = "insert into student(sname,cid) values("tom",2);"
res = cursor.execute(sql,)
print(res) #打印sql影响成功的行数
conn.commit() #提交后才发现表中插入记录成功

#方式2
sql = "insert into student(sname,cid) values(%s,%d);"
res = cursor.execute(sql,("tom",2))         #参数放在元祖中
print(res)
conn.commit() #提交后才发现表中插入记录成功

#方式3
sql='insert into student(sname,cid) values(%s,%d);'
res=cursor.executemany(sql,[("jack",3),("lili",4)]) #插入多行,列表
print(res)
conn.commit() #提交后才发现表中插入记录成功

cursor.close()
conn.close()

#删、改的操作类似

4 pymysql使用总结

1、pymysql.connect()参数说明
    host(str)       #MySQL服务器地址
    port(int)       #MySQL服务器端口,默认3306
    user(str)       #用户名
    password(str)   #密码
    db(str)         #数据库名
    charset(str)    #连接编码

2、connection对象支持的方法
    cursor()        #获得游标
    commit()        #提交当前事务
    rollback()      #回滚当前事务
    close()         #关闭连接

3、cursor对象支持的方法
    execute()           #执行一个sql语句
    fetchone()          #获取结果集中的一条记录
    fetchmany(size)     #获取结果集中的多条记录,size指定条数
    fetchall()          #获取结果集中的所有剩下所有条
    rowcount()          #返回数据条数或影响行数
    rownumber           #返回数据条数或影响行数
    close()             #关闭游标对象
    

python程序中使用MySQL数据库的更多相关文章

  1. python项目中对mysql数据库进行配置,并进行连接测试

    在settings.py中配置mysql数据库进行相关配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME ...

  2. Java程序中实现 MySQL数据库的备份与还原

    案例代码: 数据库备份 //mysqldump -h端口号 -u用户 -p密码 数据库 > d:/test.sql --备份D盘 //备份 public static void dataBase ...

  3. shell中读写mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  4. Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...

  5. Windows10系统的Linux子系统中安装MySQL数据库心得

    后端开发童鞋们, 自己开发机用的是Windows系统电脑(台式机或笔记本), 而开发的程序和使用的数据库等要运行在Linux服务器上, 这种情况有木有? 提前声明: 本文并不讨论操作系统的比较, 以及 ...

  6. 【Python】Windows平台下Python、Pydev连接Mysql数据库

    Mysql数据库是跨平台的,不是说Python一定就要连接Mongodb. Python连接Mysql数据库是非常easy的. 首先,你要配置好Python的开发环境,详见<[Python]Wi ...

  7. 【mysql】备份篇2:使用java程序定期备份mysql数据库

    承接备份篇1, 在备份篇1中,使用dat文件加+系统计划任务程序完成mysql定期备份任务 在这一篇,备份使用java程序定期备份mysql数据库. 下面代码和程序思想给出: package com. ...

  8. 在 Android 应用程序中使用 SQLite 数据库以及怎么用

    part one : android SQLite 简单介绍 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库.它支持 SQL 语言,而且仅仅利用非常少的内存就有非常好的性能.此外它还是开 ...

  9. django 中连接mysql数据库的操作步骤

    django中连接mysql数据库的操作步骤: 1 settings配置文件中 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mys ...

随机推荐

  1. linux初学者-sshd服务

     linux初学者-sshd服务   在linux系统操作中,经常需要连接其他的主机,连接其他主机的服务是openssh-server,它的功能是让远程主机可以通过网络访问sshd服务,开始一个安全s ...

  2. TCP三次握手抓包理解

    TCP建立连接需要三次握手,分手需要四次握手,平时在网上看到很多次,但是还没有很理解.为什么分手要多一次?可能是刚开始追求女生的时候比较容易,到分手的时候就比较麻烦了吧... 了解某个东西要从它的基础 ...

  3. Linux vi/vim使用

    vi/vim 基本使用方法 vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令. 1.vi的基本概念 基本上vi ...

  4. python 读取文件1

    1.脚本 from sys import argv script,filename = argv txt = open(filename) print ("the filename is % ...

  5. 微信小程序onLoad与onShow的区别

    现在招聘网站上,会小程序开发都可以找到月薪不错的职位了,可见小程序认可度还是可以的! 小程序声明周期onLoad与onShow的区别? onLoad页面加载时调用,可以获取参数,通过options. ...

  6. Linux系统管理----目录与文件管理作业习题

    chapter02 - 03 作业 1.  分别用cat \tac\nl三个命令查看文件/etc/ssh/sshd_config文件中的内容,并用自己的话总计出这三个文档操作命令的不同之处? cat ...

  7. 你可能不知道的Docker资源限制

    What is 资源限制? 默认情况下,容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源.Docker提供了一种控制分配多少量的内存.CPU或阻塞I/O给一个容器的方式,即通过在dock ...

  8. 彻底理解kubernetes CNI

    kubernetes各版本离线安装包 CNI接口很简单,特别一些新手一定要克服恐惧心里,和我一探究竟,本文结合原理与实践,认真读下来一定会对原理理解非常透彻. 环境介绍 我们安装kubernetes时 ...

  9. 减谈迷宫C++

    今天老师让做了个迷宫问题,我一看到就发现和我之前写过的一个程序是一样 的,但是在后来编写的时候有一个地方搞错了,最后下课了我还是没有正确的编写好,然后今天回来之后自己有看了一下,现在已经解决了. #i ...

  10. Mac 安装 homebrew 流程 以及 停在 Updating Homebrew等 常见错误解决方法

    懒人操作顺序:S_01>>>S_02>>>S_03 首先这是homebrew的官网 https://brew.sh/index_zh-cn 安装方法是在终端中输入 ...