python的pymysql使用方法【转】
前言
pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。
本文测试python版本:2.6.6。mysql版本:5.7.17
一、安装
pip install pymysql
二、使用操作
创建测试环境
mysql> create database zst;
Query OK, row affected (0.03 sec) mysql> use zst
Database changed mysql> create table tb(id int not null auto_increment, user varchar(),pass varchar(),licnese varchar(),primary key(id));
Query OK, rows affected (0.08 sec) mysql> insert into tb(user,pass,licnese)values("u1","u1pass","");
Query OK, row affected (0.11 sec) mysql> insert into tb(user,pass,licnese)values("u2","u2pass","");
Query OK, row affected (0.05 sec) mysql> insert into tb(user,pass,licnese)values("u3","u3pass","");
Query OK, row affected (0.00 sec) mysql> insert into tb(user,pass,licnese)values("u5","u5pass","");
Query OK, row affected (0.00 sec) mysql> insert into tb(user,pass,licnese)values("u6","u6pass","");
Query OK, row affected (0.01 sec) mysql> select * from tb;
+----+------+--------+---------+
| id | user | pass | licnese |
+----+------+--------+---------+
| | u1 | u1pass | |
| | u2 | u2pass | |
| | u3 | u3pass | |
| | u4 | u4pass | |
| | u5 | u5pass | |
| | u6 | u6pass | |
+----+------+--------+---------+
rows in set (0.00 sec)
1、查询
#!/usr/bin/python
#coding: utf-8
import sys
import os
import pymysql # 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3307, user='root', passwd='hch123', db='zst', charset='utf8') # 创建游标
cursor = conn.cursor() # 执行SQL
cursor.execute("select * from tb") # 获取剩余结果的第一行数据
row_1 = cursor.fetchone()
print row_1 # 获取剩余结果前n行数据
row_2 = cursor.fetchmany(3)
print row_2 # 获取剩余结果所有数据
row_3 = cursor.fetchall()
print row_3 conn.commit()
cursor.close()
conn.close()
执行
加入try判断
#!/usr/bin/python
#coding: utf-8
import pymysql #导入 pymysql #打开数据库连接
db= pymysql.connect(host="localhost",user="root",
password="hch123",db="zst",port=3307) # 使用cursor()方法获取操作游标
cur = db.cursor() #1.查询操作
# 编写sql 查询语句 user 对应我的表名
sql = "select * from user"
try:
cur.execute(sql) #执行sql语句 results = cur.fetchall() #获取查询的所有记录
print("id","name","password")
#遍历结果
for row in results :
id = row[0]
name = row[1]
password = row[2]
print(id,name,password)
except Exception as e:
raise e
finally:
db.close() #关闭连接
执行
2、获取新创建数据自增ID
可以获取到最新自增的ID,也就是最后插入的一条数据ID
#!/usr/bin/python
#coding: utf-8 import sys
import os
import pymysql # 创建连接
conn = pymysql.connect(host='127.0.0.1', port=3307, user='root', passwd='hch123', db='zst') # 创建游标
cursor = conn.cursor() # 执行SQL
effect_row = cursor.executemany("insert into tb(user,pass,licnese)values(%s,%s,%s)", [("u3","u3pass",""),("u4","u4pass","")])
conn.commit()
cursor.close()
conn.close()
#获取自增id
new_id = cursor.lastrowid
print new_id
查询结果
mysql> select * from tb; +----+------+--------+---------+
| id | user | pass | licnese |
+----+------+--------+---------+
| | u1 | u1pass | |
| | u2 | u2pass | |
| | u3 | u3pass | |
| | u4 | u4pass | |
| | u5 | u5pass | |
| | u6 | u6pass | |
| | u3 | u3pass | |
| | u4 | u4pass | |
+----+------+--------+---------+
rows in set (0.00 sec)
加入try判断的python脚本
#!/usr/bin/python
#coding: utf-8 import pymysql #导入 pymysql #打开数据库连接
db= pymysql.connect(host="localhost",user="root",
password="hch123",db="zst",port=3307) # 使用cursor()方法获取操作游标
cur = db.cursor() sql_insert ="""insert into user(id,username,password) values(5,'liu','1234')""" try:
cur.execute(sql_insert)
#提交
db.commit()
except Exception as e:
#错误回滚
db.rollback()
finally:
db.close()
执行
[root@hchtest3 ~]# python insert_try.py mysql> select * from zst.user;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | hch | 11113 |
| 2 | hch1 | 11114 |
| 3 | hch2 | 11115 |
| 4 | liu | 1234 |
| 5 | liu | 1234 |
+----+----------+----------+
5 rows in set (0.00 sec)
3、更新操作
#!/usr/bin/python
#coding: utf-8 import pymysql #导入 pymysql #打开数据库连接
db= pymysql.connect(host="localhost",user="root",
password="hch123",db="zst",port=3307) # 使用cursor()方法获取操作游标
cur = db.cursor() sql_update ="update user set username = '%s' where id = %d" try:
cur.execute(sql_update % ("xiongda",3)) #像sql语句传递参数
#提交
db.commit()
except Exception as e:
#错误回滚
db.rollback()
finally:
db.close()
执行
mysql> select * from zst.user;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | hch | 11113 |
| 2 | hch1 | 11114 |
| 3 | xiongda | 11115 |
| 4 | liu | 1234 |
| 5 | liu | 1234 |
+----+----------+----------+
5 rows in set (0.00 sec)
4、删除操作
#!/usr/bin/python
#coding: utf-8 import pymysql #导入 pymysql #打开数据库连接
db= pymysql.connect(host="localhost",user="root",
password="hch123",db="zst",port=3307) # 使用cursor()方法获取操作游标
cur = db.cursor() sql_delete ="delete from user where id = %d" try:
cur.execute(sql_delete % (3)) #像sql语句传递参数
#提交
db.commit()
except Exception as e:
#错误回滚
db.rollback()
finally:
db.close()
执行
mysql> select * from zst.user;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| | hch | |
| | hch1 | |
| | liu | |
| | liu | |
+----+----------+----------+
rows in set (0.00 sec)
5、fetch数据类型
关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# __author__ = "TKQ"
import pymysql conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='tkq1')
#游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("select * from tb7") row_1 = cursor.fetchone()
print row_1 #{u'licnese': 213, u'user': '123', u'nid': 10, u'pass': '213'} conn.commit()
cursor.close()
conn.close()
转自
python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作 - CSDN博客
https://blog.csdn.net/qq_37176126/article/details/72824106
Python中操作mysql的pymysql模块详解 - 明天OoO你好 - 博客园
http://www.cnblogs.com/wt11/p/6141225.html
python的pymysql使用方法【转】的更多相关文章
- python之pymysql模块学习(待完善...)
pymysql介绍 pymysql是在python3.x版本中用于连接mysql服务器的一个库.python2中则使用mysqldb. 安装方法: pip install pymysql 使用实例: ...
- python 调用pymysql模块遇到\转义问题解决办法
1.问题情况 本来存入mysql的是字典,有汉字,由于python版本是2.7,所以在json的时候把我的值变成了unicode,那么在调用pymysql的时候,mysql给我转义取消了. 存之前: ...
- python的pymysql模块简介
一.介绍 在python中用pymysql模块来对mysql进行操作,该模块本质就是一个套接字客户端软件,使用前需要事先安装 pip3 install pymysql 二.操作简介 import py ...
- Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁
Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: ...
- Python进阶----pymysql模块的使用,单表查询
Python进阶----pymysql模块的使用,单表查询 一丶使用pymysql 1.下载pymysql包: pip3 install pymysql 2.编写代码 ...
- Python 之 PyMySQL 安装和使用
Python具有内置的SQLite支持. 在本节中,我们将学习使用MySQL的相关概念和知识. 在早期Python版本一般都使用MySQLdb模块,但这个MySQL的流行接口与Python 3不兼容. ...
- python 类属性与方法
Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外 ...
- Python执行系统命令的方法 os.system(),os.popen(),commands
os.popen():用python执行shell的命令,并且返回了结果,括号中是写shell命令 Python执行系统命令的方法: https://my.oschina.net/renwofei42 ...
- python 调用 shell 命令方法
python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 ...
随机推荐
- 剑指Offer_编程题_2
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. class Solution ...
- 建立Heapster Influxdb Grafana集群性能监控平台
依赖于kubenets dns服务 图形化展示度量指标的实现需要集成k8s的另外一个Addons组件: Heapster .Heapster原生支持K8s(v1.0.6及以后版本)和 CoreOS , ...
- 【JS】js将 /Date(1518943415760+0800)/ 转换为2018-2-18 16:43:35格式
function formatDate(dt) { var year = dt.getFullYear(); var month = dt.getMonth() + 1; var date = dt. ...
- java项目反编译获得源码
经常能找到一些 过时的 项目源码,但是还是有研究价值的.但是肯定是不会给你源码的. 下面介绍怎么反编译: 1.在项目中找到classes这个文件夹,这个就是编译过的文件. 2.下载反编译工具JD-GU ...
- springboot的lombok
lombok概述 lombok简介 Lombok想要解决了的是在我们实体Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不会用到,但是某些时候仍然需要复写 ...
- Android 全屏设置和禁止横屏竖屏切换
android:screenOrientation="portrait" #禁止屏幕横竖切换,portrait为纵向,landscape为横向
- 新SQL temp
select a.createtime, -- 日期 dept.name as deptName, -- 科室 (select t.docname from ( SELECT u.clinic_id ...
- 经典文摘:饿了么的 PWA 升级实践(结合Vue.js)
自 Vue.js 官方推特第一次公开到现在,我们就一直在进行着将饿了么移动端网站升级为 Progressive Web App 的工作.直到近日在 Google I/O 2017 上登台亮相,才终于算 ...
- ubuntu终端命令启动matlab方法
让所有用户都有权限使用matlab,在终端输入 sudo gedit /etc/profile 在后行写 export MATLABPATH=/home/ubuntu/MATLAB/R2016b:$M ...
- Matconvnet环境配置一些坑
1.先安装VS再安装matlab否则安装失败 2.cuda7.5支持MATLABR2016a/b,支持VS2013但是不支持VS2015 3.cuda8.0支持MABTLABR2017a,对应编译需V ...