Python操作mysql数据库的基本方法

标签: python mysql pymysql 基本方法
15人阅读 评论(0) 收藏 举报
分类:

往mysql写数据一段时间了,但一直没写篇博客记录,所以今日特地补上一篇。

(以下操作的前提是你已配好了python环境及安装了mysql数据库)

python版本: 2.7

模块安装: pip install  pymysql

前言:考虑到现在python3.x已经不支持MySQLdb了,所以本次采用pymysql讲解,使用python3.x的看官改下语法就行。

首先,说下操作步骤。

1.建个测试表,表名为test,如下图所示(找个mysql的可视化软件,操作方便些,如 Navicat for MySQL)



2.敲代码...


步骤说完,接下来...啥?这就完了?对,就是这么简单。

接下来说说新手要注意的‘’,这才是重头戏!

1)表中中文老是显示乱码怎么办?别慌,看下图->


2)增删改查都试了,数据还是没变化,这....快哭了

   少年,你的 xx.commit()掉了,切记,不提交都是徒劳。

3)往表中插入多条数据,好好的中文怎么就变成了'\x23\2423\123\...'这是什么鬼...

  莫怕,你可以这样写:

  sql = 'insert into test values(' +str(ids[i]) + ',"' + names[i] + '",' + str(ages[i]) + ',"' + sex[i] + '"'')'

  额...,这一堆的单引号、双引号是个什么玩意?才两个字符串就这样,多了还不直接晕掉?换个行不行?

  当然可以!

  其实你可以这样写: sql = 'insert into test values({},"{}",{},"{}")'.format(ids[i], names[i], ages[i], sexs[i])

    注: {}相当于一个容器,放整数、小数、字符串都行,不过放字符串的时候要加上"",变成这样->"{}"

  或者这样写: sql = 'insert into test values(%d,"%s",%d,"%s")' % (ids[i], names[i], ages[i], sexs[i])

    注:%d表示整型,%s表示字符串,放字符串的地方也要加"",即变成 "%s"

4)查询得到结果集后,用fetchone()得到一条数据,然后迫不及待地打印输出,结果....


   我的中文又没了...

   同学,请'脚踏实地'的循环输出...

到此,大坑就基本说完了,下面直接上'菜',各位慢慢品尝...

# coding=UTF-8
import pymysql
#插入数据
def testInsert(Cursor):
    try:
        # test后无具体字段,表示添加全部字段,等价于test(id,name,age,sex),()中为全部字段名
        # sql = 'insert into test values(2,"小明",19,"男")' #添加单条记录
        # 非添加所有字段时,要将所有添加字段名写上
        #sql = 'insert into test(id,name,age) values(3,"小虎",17)'
        # 添加多条记录方法
        ids = [1, 2, 3, 4]
        names = ['小白', '小黄', '小花', '小草']
        ages = [12, 13, 14, 15]
        sexs = ['男', '男', '女', '女']
        for i in range(4):
            # sql = 'insert into test values(' + str(ids[i]) + ',"' + names[i] + '",' + str(ages[i]) + ',"' + sexs[i] + '"'')'
            # sql = 'insert into test values({},"{}",{},"{}")'.format(ids[i], names[i], ages[i], sexs[i])
            sql = 'insert into test values(%d,"%s",%d,"%s")' % (ids[i], names[i], ages[i], sexs[i])
            print sql
            Cursor.execute(sql)
            print '添加成功'
    except Exception, e:
        print '添加失败', e

#删除数据
def testDelete(Cursor, id): 
    try:
        # sql = 'delete from test where id=4' #给定id具体值
        sql = 'delete from test where id =%d' % id  # id值由外面传入
        Cursor.execute(sql)
        print '删除成功'
    except Exception, e:
        print '发生异常:', e

#修改数据
def testUpdate(Cursor, name, id): 
    try:
        sql = 'update test set name="更改",age=3,sex="未知" where id=2'  # 直接给值
        sql = 'update test set name="{}" where id={}'.format(name, id)  # 由外部传值
        Cursor.execute(sql)
        print '修改成功'
    except Exception, e:
        print '发生异常:', e

#查询数据
def testSelect(cursor, id):
    try:
        # sql = 'select * from test where id=2'  # 查询单条记录,直接给值
        # sql = 'select * from test where id=%d' % id  # 查询单条记录,外部传值
        sql = 'select * from test'  # 查询所有记录
        cursor.execute(sql)
#         data = cursor.fetchone()  # 从结果集中取得单条数据
#         print type(data)  # 验证返回类型
#         for d in data:
#             print d,

        data = cursor.fetchall()  # 获取结果集的所有数据
        print type(data)  # 验证返回类型
        for r in data:  # 先取得每条记录的元组对象
            for d in r:
                print d,
            print

        # 在con.cursor()中加上参数 MySQLdb.cursors.DictCursor后,查询返回一个字典对象,可通过字段名取值
#         data = cursor.fetchall()
#         print type(data)  # 验证返回类型
#         print '按字段名取值测试成功:'
#         for d in data:
#             print 'id:', d['id'], 'name:', d['name'], 'age:', d['age'], 'sex:',d['sex']
    except Exception, e:
        print '发生异常:', e

#获取记录数
def testCounts(cursor):
    try:
        sql = 'select count(*) from test'
        cursor.execute(sql)
        length = cursor.fetchone()
        print'共有:', length[0], '条记录'
    except Exception, e:
        print '发生异常', e


if __name__ == '__main__':
    try:
        con = pymysql.connect('localhost', '你的mysql用户名', '密码', '要连接的数据库', charset='utf8')
        # 加入编码,防止表中乱码,切记,是 utf8 !!!不是utf-8!
        cursor = con.cursor()  #创建操作游标,无参数时查询方法返回一个元组对象
        # cursor = con.cursor(MySQLdb.cursors.DictCursor)  # 加上该参数后,查询方法返回一个字典对象
        # testInsert(cursor)  # 测试插入方法
        # testDelete(cursor, 1)  # 测试删除方法
        # testUpdate(cursor, '我又改名了', 2)  # 测试修改方法
        testSelect(cursor, 2)  # 测试查询方法
        testCounts(cursor)  # 测试获取记录数方法
        con.commit()  # 记得提交,不然没有效果
    except Exception, e:
        print '连接数据库失败', e
        con.rollback()  # 错误时回滚
    finally:
        cursor.close()
        con.close()  # 关闭数据库连接

运行图就放这两张做代表了,有兴趣的可以粘贴下来慢慢‘玩’。不过连接那里记得改哈大笑

查看评论

Python操作MySQL数据库的三种方法

1. MySQLdb 的使用(1) 什么是MySQLdb?  MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 My...
  • Oscer2016
  • Oscer2016
  • 2017年04月20日 13:13
  • 15971

使用dnspython进行DNS解析并对网站进行轮询检查

最近看了天斯大神的《python自动化运维》,里边有DNSPython的案例感觉写的很实用,想拿过来用。但是我在服务器上装了个python3.6。就打算用Python3来替代原来的检查程序。 首先需...
  • shishui07
  • shishui07
  • 2018年01月06日 20:34
  • 71

JQ中操作DOM的一些方法小结

(1) 要在HTML中创建新元素,使用$()函数。 (2) 要在每个匹配的元素中插入新元素,使用:  .append()   方法在被选元素的结尾(仍然在内部)插入指定内容。  .appendT...
  • wanxue0804
  • wanxue0804
  • 2017年11月05日 23:44
  • 72

JS中常用的DOM基本操作方法总结

DOM常用方法总结: 第一个获取元素的方法: 1.包括了主要的常用获取元素的方法,在上下文中通过ID、class、name以及tagname来获取元素。 同时获取当前页面HTML标签或者BODY...
  • ajiblog
  • ajiblog
  • 2016年01月20日 00:07
  • 262

mysql数据库基本方法

 启动:net start mySql;   进入:mysql -u root -p/mysql -h localhost -u root -p databaseName;   列出数据库:show ...
  • quanc_java
  • quanc_java
  • 2008年07月31日 09:24
  • 858

ubuntu下如何使用mysql/python中如何调用sql新建一个数据库

在上一篇中给出了ubuntu下如何安装Python-mysql的方法,这篇中我们主要介绍如何在ubuntu下用mysql建立一个数据库进行相应的增删改查。这里我参考了(http://www.jb51....
  • qq_31377057
  • qq_31377057
  • 2016年07月18日 13:17
  • 712

通过python操作mysql和orm操作mysql

python3.0需要安装pymysql 数据连接操作 # Author:dancheng import pymysql #创建链接 conn = pymysql.connect(host...
  • dancheng1
  • dancheng1
  • 2017年10月18日 20:16
  • 225

pytohn驱动连接mysql数据库

用python连接数据库进行数据库操作。
  • JOHNEW
  • JOHNEW
  • 2016年11月23日 22:18
  • 1875

python mysql数据库的操作

#-*- coding:utf-8 -*- import sys import mysql.connector import chardet reload(sys) sys.setdefault...
  • xiaoyaozizai017
  • xiaoyaozizai017
  • 2017年07月12日 21:08
  • 96

Linux下python连接MySQL数据库

Linux下python连接MySQL数据库方法 要连接数据库名称是hhh,用户名是tom,连接的数据表是 data_import,其中 data_import数据结构如下(5个属性): my...
  • ysdaniel
  • ysdaniel
  • 2011年12月18日 14:25
  • 4121
    个人资料
    等级:
    访问量: 145
    积分: 51
    排名: 168万+
    文章存档