一、操作步骤

1、导入pymysql模块

2、建立连接(ip、用户名、密码、数据库名、端口号、字符集、(自动提交参数)

3、建立游标

4、执行sql语句

(4、需要提交的提交)

5、关闭游标

6、关闭连接

import pymysql

host='xxx.xxx.xxx.xxx'
user='abc'
password='' #密码只能是字符串
db='database_name'
port=3306 #端口号只能写int类型
charset='utf8' #只能写utf8,不能写utf-8 #建立连接
conn=pymysql.connect(host=host,password=password,user=user,db=db,
port=port,charset=charset) #建立游标
cur=conn.cursor() res=cur.execute('show tables;') #只是帮你执行sql语句,不会返回执行结果
#print(res) #结果为执行语句的指针序列号
print(cur.fetchall()) #获取数据库里面的所有表,返回的是一个二维数组,一个大数组,里面是每个表 #关闭游标
cur.close() #关闭连接
conn.close()

二、执行sql语句

1)cur.execute('sql语句')

cur.execute('select * from app_myuser limit 5;') #获取一张表中的所有信息
print(cur.fetchall())

2)insert、update、delete都需要在.execute()之后执行提交后才可以将数据写入数据库

(1)conn.commit()

sql='insert into app_mysuer(username,passwd,is_admin) values("lrx","123456",1)'
cur.execute(sql) #这样执行完数据库中无数据
#insert、update、delete都需要在.execute()之后执行.commit()才可以将数据写入数据库
conn.commit() #提交

(2)将提交参数直接写在连接语句中,可以自动提交

autocommit=True

#建立连接
conn=pymysql.connect(host=host,password=password,user=user,db=db,
port=port,charset=charset,autocommit=True)
#conn.commit() #加入自动提交参数后就不需要再执行单独提交语句了

3)获取表里的所有字段的信息

res=cur.execute('select *from app_myuser ;')#不执行这条的话,cur.description打印的结果为None
print(cur.description) #获取表里的所有字段的信息
#结果为:
#(('id', 3, None, 11, 11, 0, False), ('username', 253, None, 32, 32, 0, False), ('passwd', 253, None, 32, 32, 0, False), ('is_admin', 2, None, 6, 6, 0, False))

4)获取表结构信息

sql2='describe app_myuser'
res=cur.execute(sql2)
print(cur.fetchall())
#结果为:
#(('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'), ('username', 'varchar(32)','NO', 'UNI', None, ''), ('passwd', 'varchar(32)', 'NO', '', None, ''), ('is_admin','smallint(6)', 'NO', '', None, ''))

三、返回sql语句执行结果

  • print(cur.fetchall())
  • print(cur.fetchone())
print(cur.fetchall())
print(cur.fetchone()) #返回结果为空,因为上面已经执行到最后了,游标到尾了,类似于文件指针 #先注释掉.fetchall()再运行即可
print(cur.fetchone()) #每次取一行数据

.fetchall()和.fetchone()的区别:

  • 在不知道一共多少条的情况下,只能使用.fetchall()
  • .fetchall()返回的是二维数组,取字段时不方便
  • .fetchone()返回的是一维数组,当结果只有一条时,使用.fetchone()比较方便

四、具体实现

1、传入任意数据库信息,执行sql语句并返回结果:

#传入sql语句,返回sql执行结果
def my_db(ip,user,password,db,sql,port=3306,charset='utf8'):
conn=pymysql.connect(
host=ip,user=user,password=password,db=db,port=port,
charset=charset,autocommit=True) #连接数据库,自动提交sql
cur=conn.cursor() #建立游标
cur.execute(sql) #执行sql语句
res=cur.fetchall() #返回sql执行结果
cur.close() #关闭游标
conn.close() #关闭连接
return res #返回执行结果

2、使用固定数据库,执行sql语句并返回结果:

def my_db2(sql):
conn=pymysql.connect(
host='xxx.xxx.xxx.xxx',user='abc',password='',db='dbname',port=3306,
charset='utf8',autocommit=True)
cur=conn.cursor()
cur.execute(sql)
res=cur.fetchall()
cur.close()
conn.close()
return res

Python之操作MySQL数据库的更多相关文章

  1. python 之操作mysql 数据库实例

    对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...

  2. Python之 操作 MySQL 数据库

    什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 安装 Pytho ...

  3. python实现操作mysql数据库

    实现代码如下: #mysql数据库的查询等 import pymysql from xctest_tools.xc_ReadFile.get_ReadTxt import * class mysql: ...

  4. python 安装操作 MySQL 数据库.

    以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 xpower@xpower-CW65S:~$ sudo service mysql start [sudo] xpower 的密码: ...

  5. python 连接操作mysql数据库

    开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...

  6. python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据

    今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...

  7. python 3 操作mysql数据库的方法

    参考:http://www.cnblogs.com/txw1958/archive/2012/07/22/python3-mysql.html http://www.jb51.net/article/ ...

  8. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

  9. Python操作MySQL数据库(步骤教程)

    我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ...

随机推荐

  1. Django中间件的使用

    Django中间件的使用 中间件(middleware) 中间件应用于request与服务端之间和服务端与response之间,客户端发起请求到服务端接收可以通过中间件,服务端返回响应与客户端接收响应 ...

  2. 创建一个C++制作的包含Opencv功能的dll,供C#程序使用

    目的:获取某图片指定位置的颜色. 实现该目的的方法有很多,但为了有助于扩充自己技术广度,所以决定采用标题中的方法来完成. 没有C++编程经验,也没有制作C++版Opencv语法经验,也没有制作dll的 ...

  3. Sublime Text 2 配置PHP调试环境(在windows环境下)

    1:PHP安装,配置环境变量 PHP安装略过- 2:下载Sublime Text 2 下载地址:http://www.sublimetext.com/2 ,选择自己合适的版本 3:点击 sublime ...

  4. March 06th, 2018 Week 10th Tuesday

    Hope for the best, but prepare for the worst. 抱最好的愿望,做最坏的打算. To hope for the best and prepare for th ...

  5. 聚类——FCM的matlab程序

    聚类——FCM的matlab程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 在聚类——FCM文章中已介绍了FCM算法的理论知识,现在用matlab ...

  6. 02.Python网络爬虫第二弹《http和https协议》

    一.HTTP协议 1.官方概念: HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文 ...

  7. UVA12107-Digit Puzzle(迭代加深搜索)

    Problem UVA12107-Digit Puzzle Accept:85  Submit:612 Time Limit: 3000 mSec  Problem Description  Inpu ...

  8. php 乱整

    php获取两个数组相同的元素(交集)以及比较两个数组中不同的元素(差集) (一)php获取两个数组相同元素 array  array_intersect(array  $array1, array $ ...

  9. 【ES6】函数

    函数默认值问题 在ES6之前,不能直接为函数指定默认值,但是ES6允许为函数的参数设置默认值 之前实现方式 function log(x, y) { y = y || 'World'; console ...

  10. 16.xml

    一.xml 1.什么是XML:是一种可扩展的标记语言,所有标记都可以自定义,常用来做配置文件和数据传输的载体2.语法:标签(元素):<元素名> 值 </元素名>属性:在元素中 ...