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, 1 row affected (0.03 sec)

mysql> use zst
Database changed

mysql> create table tb(id int not null auto_increment, user varchar(64),pass varchar(64),licnese varchar(64),primary key(id));
Query OK, 0 rows affected (0.08 sec)

mysql> insert into tb(user,pass,licnese)values("u1","u1pass","11113");
Query OK, 1 row affected (0.11 sec)

mysql> insert into tb(user,pass,licnese)values("u2","u2pass","11113");
Query OK, 1 row affected (0.05 sec)

mysql> insert into tb(user,pass,licnese)values("u3","u3pass","11113");
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb(user,pass,licnese)values("u5","u5pass","11113");
Query OK, 1 row affected (0.00 sec)

mysql> insert into tb(user,pass,licnese)values("u6","u6pass","11113");
Query OK, 1 row affected (0.01 sec)

mysql> select * from tb;
+----+------+--------+---------+
| id | user | pass | licnese |
+----+------+--------+---------+
| 1 | u1 | u1pass | 11113 |
| 2 | u2 | u2pass | 11113 |
| 3 | u3 | u3pass | 11113 |
| 4 | u4 | u4pass | 11113 |
| 5 | u5 | u5pass | 11113 |
| 6 | u6 | u6pass | 11113 |
+----+------+--------+---------+
6 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","11113"),("u4","u4pass","22224")])
conn.commit()
cursor.close()
conn.close()
#获取自增id
new_id = cursor.lastrowid
print new_id

查询结果

mysql> select * from tb;

+----+------+--------+---------+
| id | user | pass   | licnese |
+----+------+--------+---------+
|  1 | u1   | u1pass | 11113   |
|  2 | u2   | u2pass | 11113   |
|  3 | u3   | u3pass | 11113   |
|  4 | u4   | u4pass | 11113   |
|  5 | u5   | u5pass | 11113   |
|  6 | u6   | u6pass | 11113   |
|  7 | u3   | u3pass | 11113   |
|  8 | u4   | u4pass | 22224   |
+----+------+--------+---------+
8 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()

执行

[[email protected] ~]# 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 |
+----+----------+----------+
|  1 | hch      | 11113    |
|  2 | hch1     | 11114    |
|  4 | liu      | 1234     |
|  5 | liu      | 1234     |
+----+----------+----------+
4 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

原文地址:https://www.cnblogs.com/paul8339/p/9570015.html

时间: 2024-07-30 11:25:32

python的pymysql使用方法【转】的相关文章

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁

Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁 一丶安装 pip install PyMySQL 二丶pymysql连接数据库 ### 语法: import pymysql # 导入py模块 conn= pymysql.connect("数据库ip","用户","密码","数据库" ) # 打开数据库连接 cursor.execute("SELECT VERSI

Python中的sort()方法的使用

本文和大家分享的主要是python中的sort()方法相关知识,一起来看看吧,希望对大家学习python有所帮助. 一.基本形式 sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排序的list或者iterable,不用多说: (2)cmp为函数,指定排序时进行比较的函数,可以指定一个函数或者lambda函数,如: students为类对象的list

Windows系统下Python与NumPy安装方法

Windows系统下Python与NumPy安装方法 Windows下Python的某些第三方包安装步骤实在是太麻烦了(这里主要以NumPy为例,目前只有遇到安装它的时候出现了很多问题),晚上花了好几个小时才把NumPy科学计算包安装好,在这里描述下安装过程,避免大家走没有必要的弯路. 1,安装Python 首先,运行下载的MSI安装包,选择安装组件时,确保勾上了所有的组件. 特别要注意选上pip和Add python.exe to Path,然后多次点击Next即可完成安装. Python解释

Python中的__new__()方法与实例化

@Python中的__new__()方法与实例化 __new__()是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python 中 存在于类里面的构造方法__init__()负责将类的实例化,而在__init__()启动之前,__new__()决定是否 要使用该__init__()方法,因为__new__()可以调用其他类的构造方法或者直接返回别的对象来作为本类 的实例. 如果将类比喻为工厂,那么__init__()方法则是该工厂的生产工人,__init__()方法接受

Python字典高级使用方法汇总

Python字典高级使用方法汇总 字典(dictionary)是python中的一种非常灵活和强大的数据结构,可以完成很多操作.本文总结了一些除了基本的初始化.赋值.取值之外的常用的字典使用方法. 字典基础参考: [1]:http://www.w3cschool.cc/python/python-dictionary.html [2]:http://www.111cn.net/phper/python/56355.htm [3]:http://skyfen.iteye.com/blog/5675

可以进行自动补全的python的eclipse配置方法

/*********************************************************************  * Author  : Samson  * Date    : 05/21/2014  * Test platform:  *              Mint 15-3.8.13.13  *              GNU bash, version 4.2.45  * ***************************************

关于python中的特殊方法

研究了几个小时,大概对python中的特殊方法一知半解,现在写写自己的理解,以及记录一些找到的资源.待自己有比较深入理解的时候,再来更新 https://docs.python.org/3/reference/datamodel.html#special-method-names 有一篇文章是要必须推荐给读者阅读的:Python Attributes and Methods(http://www.cafepy.com/article/python_attributes_and_methods/p

Python的内置方法,abs,all,any,basestring,bin,bool,bytearray,callable,chr,cmp,complex,divmod

Python的内置方法 abs(X):返回一个数的绝对值,X可以是一个整数,长整型,或者浮点数,如果X是一个复数,此方法返回此复数的绝对值(此复数与它的共轭复数的乘积的平方根) >>> abs(3+2j) 3.605551275463989 >>> abs(3-2j) 3.605551275463989 all(iterable):如果迭代器的所有元素都是true,或者空迭代器,则此方法返回true. any(iterable):迭代器只要有一个元素为false,或者空

Python学习——数据排序方法

Python对数据排序又两种方法: 1. 原地排序:采用sort()方法,按照指定的顺序排列数据后用排序后的数据替换原来的数据(原来的顺序丢失),如: >>> data1=[4,2,6,432,78,43,22,896,42,677,12] >>> data1.sort() >>> data1 #原来的顺序被替换 [2, 4, 6, 12, 22, 42, 43, 78, 432, 677, 896] 2. 复制排序:采用sorted()内置函数,按照