用Python操作MySQL(pymysql)
用python来操作MySQL,首先需要安装PyMySQL库(pip install pymysql)。
连接MySQL:
import pymysql
connect=pymysql.connect(host='localhost',user='root',password='xxxx',port=3306)
注:此时还未创建数据库,如已创建数据库,在连接时需再加上一个参数db。
注:host为指定的连接服务器的地址,设置为'localhost'代表连接到本地的MySQL服务上,user为用户名,password为密码,port为指定的端口(默认为3306)。
创建游标:(我们需要用游标来执行各种操作)
cursor=connect.cursor()
关闭游标:
cursor.close()
关闭连接:
connect.close()
执行单条sql语句:
cursor.execute(...)
执行多条sql语句:
cursor.executemany(...)
提交事务:
connect.commit()
回滚事务:
connect.rollback()
在Python中对数据库进行增删改等操作使用的是事务处理,因此在执行增删改SQL语句后,需要提交事务才能在数据库中完成操作,并且还需添加错误判断,当执行SQL语句失败后,需要对事务进行回滚。增删改模板如下:
sql='...' try:
cursor.execute(sql)
connect.commit()
except:
connect.rollback()
创建数据库:
cursor.execute("CREATE DATABASE db_test DEFAULT CHARACTER SET utf8") #创建名为db_test的数据库
选择数据库:
connect.select_db('db_name')
创建表:
sql='CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL,name VARCHAR(255)\
NOT NULL,age INT NOT NULL,PRIMARY KEY(id))' #创建一个名为students的数据表,分为id,name和age三列,其中id为主键
cursor.execute(sql)
插入数据:
id=''
name='Hu'
age=5 sql='INSERT INTO students(id,name,age) VALUES (%s,%s,%s)' try:
cursor.execute(sql,(id,name,age))
connect.commit()
except:
connect.rollback()
修改数据:
sql='UPDATE students SET age=%s WHERE name=%s' try:
cursor.execute(sql,(4,'Hu'))
connect.commit()
except:
connect.rollback()
更新数据(如果数据存在,则更新数据,如果数据不存在,则插入数据):
data={'id':'',
'name':'Bo',
'age':11}
#为了方便修改数据,把数据以字典形式传入,这样就不需要修改sql语句了
table='students'
keys=','.join(data.keys())
values=','.join(['%s']*len(data))
sql='INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE '.format(table=table,keys=keys,values=values)
#相当于INSERT INTO students(id,name,age) VALUES (%s.%s,%s) ON DUPLICATE KEY UPDATE
update=','.join(["{key}=%s".format(key=key) for key in data.keys()])
#相当于id=%s,name=%s,age=%s
sql=sql+update
try:
cursor.execute(sql,tuple(data.values())*2)
connect.commit()
print("Sucessful")
except:
connect.rollback()
print("Failed")
删除数据:
sql='DELETE FROM xxx WHERE ...' try:
cursor.execute(sql)
connect.commit()
except:
connect.rollback()
连接MySQL数据库+增删改操作的完整模板如下:
import pymysql connect = pymysql.connect(host='...', # IP地址
port=3306, # 端口号
user='...', # 用户名
password='...', # 密码
db='...', # 数据库名
charset='utf8') # 链接字符集 cursor = connect.cursor() # 创建游标 sql='...' try:
cursor.execute(sql) # 执行SQL语句
connect.commit() # 提交事务
except Exception as e:
connect.rollback() # 如果发生错误,则回滚事务
finally:
cursor.close() # 关闭游标
connect.close() # 关闭数据库
查询数据:
sql='SELECT * FROM xxx WHERE ...'
cursor.execute(sql)
获取查询结果的条数:
cursor.rowcount
获取第一条数据:(元组形式)
cursor.fetchone()
获取所有数据:
cursor.fetchall()
获取指定数量的数据:
cursor.fetchmany(num)
逐条获取数据:
results = cursor.fetchall() for row in results:
print(row)
fetchall()会将结果以元组形式全部返回,如果数据量很大,那么占用的开销会非常高。因此,推荐使用如下方法来逐条读取数据:
row=cursor.fetchone() while row:
print(row)
row=cursor.fetchone()
总结来说,执行什么样的操作要根据SQL语句来定。因此需要学习好SQL的语法。
参考:https://cuiqingcai.com/5578.html
https://cloud.tencent.com/developer/article/1457448
用Python操作MySQL(pymysql)的更多相关文章
- mysql数据库----python操作mysql ------pymysql和SQLAchemy
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy 一.pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQ ...
- day40:python操作mysql:pymysql模块&SQL注入攻击
目录 part1:用python连接mysql 1.用python连接mysql的基本语法 2.用python 创建&删除表 3.用python操作事务处理 part2:sql注入攻击 1.s ...
- python成长之路【第十三篇】:Python操作MySQL之pymysql
对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...
- Python操作MySQL:pymysql和SQLAlchemy
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python操作Mysql之基本操作
pymysql python操作mysql依赖pymysql这个模块 下载安装 pip3 install pymysql 操作mysql python操作mysql的时候,是通过”游标”来进行操作的. ...
- Python 操作 MySQL 之 pysql 与 ORM(转载)
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python开发【第十九篇】:Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
- Python全栈开发之MySQL(二)------navicate和python操作MySQL
一:Navicate的安装 1.什么是navicate? Navicat是一套快速.可靠并价格相宜的数据库管理工具,专为简化数据库的管理及降低系统管理成本而设.它的设计符合数据库管理员.开发人员及中小 ...
随机推荐
- IIS7 URL重写如何针对二级域名重写
二级域名与站点主域名是绑在同一目录下,想实现访问二级域名重写至站点下的某个目录. 如: 访问so.abc.cn 实际访问的是站点根目录下的search目录下的文件 相当于so.abc.cn绑定至s ...
- Android.mk简介:
Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解 ...
- 【转载】C#中List集合使用Max()方法查找到最大值
在C#的List集合操作中,有时候需要查找到List集合中的最大值,此时可以使用List集合的扩展方法Max方法,Max方法有2种形式,一种是不带任何参数的形式,适用于一些值类型变量的List集合,另 ...
- 供应链管理如何提高效率?APS系统成优化引擎
APS系统,虽然它的起兴只有短短的十几年,但是在这段时间里面,它为很多企业解决了很多人工手动.脑力不可解决的问题. 所以APS被誉为供应链优化引擎,APS常常被称为高级计划与排程,但也有称为高级计划系 ...
- 如何创建SAP Cloud Platform Process Integration runtime服务
登录SAP Cloud Platform cockpit,进入subaccount的Service marketplace界面,选择process integration runtime: 点击ins ...
- 【DATAGUARD】物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置
[DATAGUARD]物理dg配置客户端无缝切换 (八.1)--Data Guard Broker 的配置 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技 ...
- linux tomcat 启动后控制台未显示启动日志
在linux 服务器启动的时候未出现启动日志,这个时候,如果执行startup.sh会出现控制台没有打印任何消息的问题 应该执行: ./catalina.sh run
- python系列:一、Urllib库的基本使用
开篇介绍: 因为我本人也是初学者,爬虫的例子大部分都是学习资料上面来的,只是自己手敲了一遍,同时加上自己的理解. 写得不好请多谅解,如果有错误之处请多赐教. 我本人的开发环境是vscode,pytho ...
- appium 设备信息字典(desired_caps)
操作系统类型.操作系统版本.设备名称.要操作的APP应用的包名.activity名称desired_caps = { "platformName":"Android&qu ...
- JavaScript获得URL地址栏参数防乱码
JavaScript获得URL地址栏参数防乱码 JavaScript中经常需要解析地址栏中拼接的参数.下面的代码基本是固定的代码,这里摘录下备用. //获得地址栏参数值 function getUrl ...