一、Mysql

1、前提

pip install pymysql

import pymysql

2、详情

Connection对象 =====>用于连接数据库

用于建立与数据库的连接

创建对象:调用connect()方法

conn=connect(参数列表)

参数host:连接的mysql主机,如果本机是'localhost'

参数port:连接的mysql主机的端口,默认是3306

参数db:数据库的名称

参数user:连接的用户名

参数password:连接的密码

参数charset:通信采用的编码方式,默认是'gb2312',要求与数据库创建时指定的编码一致,否则中文会乱码

对象的方法

close()关闭连接

commit()事务,所以需要提交才会生效   =========>注意:默认开启事务模式,所以执行对数据变更的操作后要执行一下commit()方法才能对物理数据实现修改

rollback()事务,放弃之前的操作

cursor()返回Cursor对象,用于执行sql语句并获得结果

----------------------------------------------------------------------------------------------------------------------------------------------------------------

Cursor对象 =======>用于执行sql语句

执行sql语句

创建对象:调用Connection对象的cursor()方法

cursor1=conn.cursor()

对象的方法

close()关闭

execute(operation [1,2,])执行语句,返回受影响的行数

executemany(sql, ((1,),(2,)))  ====>批量数据用这个只需要执行一次sql就可以了,tmp为元组,里面元素也为元组,即元组套元组   ====>遇到大量数据需重复调用execute(sql,[])时,改用executemany只需调用一次即可,测试发现速度会快很多

例:

sql = "insert into person(name, age, telephone) values(%s, %s, %s)"

tmp = (('ninini', 89, '888999'), ('koko', 900, '999999'))

executemany(sql, tmp)

fetchone()执行查询语句时,获取查询结果集的第一个行数据,返回一个元组

next()执行查询语句时,获取当前行的下一行

fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回

scroll(value[,mode])将行指针移动到某个位置

mode表示移动的方式

mode的默认值为relative,表示基于当前行移动到value,value为正则向下移动,value为负则向上移动

mode的值为absolute,表示基于第一条数据的位置,第一条数据的位置为0

对象的属性

rowcount只读属性,表示最近一次execute()执行后受影响的行数

connection获得当前连接对象

----------------------------------------------------------------------------------------------------------------------------------------------------------------

增加

创建testInsert.py文件,向学生表中插入一条数据

#encoding=utf-8

import pymysql

try:

conn=pymysql.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8')

cs1=conn.cursor()

count=cs1.execute("insert into students(name) values('张良')")   ====>count表示受影响条数

print count

conn.commit()

cs1.close()

conn.close()

except Exception,e:

print e.message

修改

创建testUpdate.py文件,修改学生表的一条数据

#encoding=utf-8

import pymysql

try:

conn=pymysql.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8')

cs1=conn.cursor()

count=cs1.execute("update students set sname='刘邦' where id=6")    ====>count表示受影响条数

print count

conn.commit()

cs1.close()

conn.close()

except Exception,e:

print e.message

删除

创建testDelete.py文件,删除学生表的一条数据

#encoding=utf-8

import pymysql

try:

conn=pymysql.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8')

cs1=conn.cursor()

count=cs1.execute("delete from students where id=6")   ====>count表示受影响条数

print count

conn.commit()

cs1.close()

conn.close()

except Exception,e:

print e.message

查询

创建testSelect.py文件,查询学生表中一条数据

#encoding=utf-8

import pymysql

try:

conn=pymysql.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8')

cs1=conn.cursor()

count=cs1.execute("select * from  students where name=%s", ['张三'])   ====>count表示查询到的条数(即:受影响的条数)

result = cs1.fetchall()   =====>result为查询到的具体数据(用元组表示)

conn.commit()

cs1.close()

conn.close()

except Exception,e:

print e.message

sql语句参数化(解决sql注入问题)

创建testInsertParam.py文件,向学生表中插入一条数据

#encoding=utf-8

import pymysql

try:

conn=pymysql.connect(host='localhost',port=3306,db='test1',user='root',passwd='mysql',charset='utf8')

cs1=conn.cursor()

sname=input("请输入学生姓名:")

params=[sname]

count=cs1.execute('insert into students(sname) values(%s)',params)  ====>此处的%s不是字符串的格式化,而是一个占位符,字符串格式化后跟的是'%',这里跟的是','!!!  利用execute提供的这种方式无论用户输入什么都不怕了。

print count

conn.commit()

cs1.close()

conn.close()

except Exception,e:

print e.message

其它语句

cursor对象的execute()方法,也可以用于执行create table等语句

建议在开发之初,就创建好数据库表结构,不要在这里执行

转载于:https://www.cnblogs.com/baihualin/p/11288631.html

python与数据库交互的模块pymysql相关推荐

  1. Python MySQL数据库交互

    引言 本文介绍在 Python 中如何与 MySQL 数据库交互 利用 PyMySQL 数据库驱动,实现 MySQL 数据库的增删改查及事务处理 MySQL 简介 MySQL是一个关系型数据库管理系统 ...

  2. Python与数据库交互

    现在的Python 版本都是3.x,利用Python 第三方模块Pymysql与数据库交互. 在交互之前,首先要对数据库登录密码授权.我数据库自己设置的密码是1234,授权如下: 交互步骤: 1.创建 ...

  3. Python 与数据库交互的封装(MySQL,SQLServer,SQLite)

    文章目录 Python与数据库交互原理 安装包 SqlBase.py __init__函数 common函数 select函数 insert函数 delete函数 update函数 create函数 ...

  4. 数据库笔记(4)SQL练习题及Python与数据库交互

    一.数据的准备 1.1创建数据表 --创建"京东"数据库 create database jing_dong charset=utf8; --使用"京东"数据库 ...

  5. 当 Python 遇到数据库,这个模块就变得超级好用

    大家好,今天我和大家来聊一下SQLALchemy这个模块,该模块是Python当中最有名的ORM框架,该框架是建立在数据库API之上,使用关系对象映射进行数据库的操作,简而言之便是:将对象转换成SQL ...

  6. 学习笔记(十九)——Python与数据库交互(mysql、redis)

    mysql事务 关系型数据库的特性 ①原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节.事务在执行过程中发生错误,会被回滚(Rollback ...

  7. Python与sql交互入门(mysql和sqlite)

    (以下所有操作使用的均为Mac系统+pycharm为IDE,需要有数据库理论基础和sql语法知识) 目录 1.终端sql操作(mysql数据库) --连接数据库 --退出数据库 --查看所有数据库 - ...

  8. 基于Python+Mysql数据库的图书管理系统课设

    开发环境说明: windows 11 专业版 python 3.7 (所用模块pymysql) PyCharm 专业版 MYSQL 8.0 需要源代码看作者主页联系方式,或看评论区加,或私信 程序问题 ...

  9. python怎么调用navicat_Navicat使用与python操作数据库

    一.Navicat使用 1.测试+链接数据库,新建库 2.新建表,新增字段+类型+约束 3.设计表:外键 4.新建查询 5.建立表模型 二.python操作数据库 pymysql使用步骤: 1.与数据 ...

最新文章

  1. Shell 函数、数组与正则表达式
  2. 推荐几个(抖音/阿里/腾讯)年薪100W大佬的硬核公众号
  3. 使用elementui实现表单上传功能_使用ElementUI中的upload组件上传Excel文件
  4. mysql数据库的字符串表示什么意思_MySQL数据库的字符串类型详解(01)
  5. android 黑边边框,手机屏幕边缘的黑边是什么呢?
  6. MySQL5.7.19版本压缩包安装方式的一些坑
  7. oracle 群集 无存储,存储的群集注意事项 - Oracle® ZFS Storage Appliance 管理指南
  8. poj 1274 The Perfect Stall
  9. Java NIO学习篇之缓冲区Buffer详解
  10. 年味十足的喜庆红色新年春节海报PSD模板
  11. sql server 锁定_如何使用SQL Server 2014托管锁定优先级控制在线索引重建锁定
  12. 【Oracle】DataGuard中 Switchover 主、备切换
  13. 1.RESTful Web APIs中文版 --- 网上冲浪
  14. 【codevs2333】【BZOJ2002】弹飞绵羊[HNOI2010](分块)
  15. 微信小程序二维码生成
  16. Bochs使用简单教程
  17. 四、HTML标签:图片标签
  18. 从eclipse官网下载32位eclipse并配置tomcat
  19. day23 三升序列
  20. [软件人生]从应聘到骂人

热门文章

  1. django3.2.8配置使用mysql
  2. Linux /usr/bin与/usr/local/bin区别
  3. 将本地docker镜像推送到阿里云镜像仓库
  4. Linux chown命令:给资源绑定用户权限
  5. python3 连接数据库
  6. Spring MVC--使用fastjson替换jackson来响应json数据
  7. 未处理sqlexception中value_plsql异常处理
  8. linux 串口工具_Zynq下linux系统搭建
  9. Qt智能指针--QWeakPointer
  10. What?Java这么神奇的lambda表达式