Python之操作MySQL数据库
一、操作步骤
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数据库的更多相关文章
- python 之操作mysql 数据库实例
		
对于python操作mysql 数据库,具体的步骤应为: 1. 连接上mysql host 端口号 数据库 账号 密码2. 建立游标3. 执行sql(注意,如果是update,insert,delet ...
 - Python之 操作 MySQL 数据库
		
什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. 安装 Pytho ...
 - python实现操作mysql数据库
		
实现代码如下: #mysql数据库的查询等 import pymysql from xctest_tools.xc_ReadFile.get_ReadTxt import * class mysql: ...
 - python 安装操作 MySQL 数据库.
		
以ubuntu和mysql为例 检查自己的机器上面有没有安装数据库 xpower@xpower-CW65S:~$ sudo service mysql start [sudo] xpower 的密码: ...
 - python 连接操作mysql数据库
		
开发数据库程序流程: 1.创建connection对象,获取cursor 2.使用cursor执行SQL 3.使用cursor获取数据.判断执行状态 4.提交事务 或者 回滚事务 import: 数据 ...
 - python,java操作mysql数据库,数据引擎设置为myisam时能够插入数据,转为innodb时无法插入数据
		
今天想给数据库换一个数据引擎,mysiam转为 innodb 结果 python 插入数据时失败,但是自增id值是存在的, 换回mysiam后,又可以插入了~~ 想换php插入试试,结果php数据引擎 ...
 - python 3 操作mysql数据库的方法
		
参考:http://www.cnblogs.com/txw1958/archive/2012/07/22/python3-mysql.html http://www.jb51.net/article/ ...
 - python接口自动化(三十八)-python操作mysql数据库(详解)
		
简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...
 - Python操作MySQL数据库(步骤教程)
		
我们经常需要将大量数据保存起来以备后续使用,数据库是一个很好的解决方案.在众多数据库中,MySQL数据库算是入门比较简单.语法比较简单,同时也比较实用的一个.在这篇博客中,将以MySQL数据库为例,介 ...
 
随机推荐
- shell 函数用法
			
近期在学习shell编程方面的知识,写的不怎么好,请大家多多指点,下面给大家分享一下shell函数的用法. 我们为什么要用shell函数? 简单的说,函数的作用就是把程序多次调用相同的代码部分定义成一 ...
 - python发展史
			
一:Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)(龟叔).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹 打发时间,决心开发一个新的脚本解释程序, ...
 - main主函数
			
public static void main(String[] args) { //虚拟机调用main函数,需要传个args的参数,传入的是new String[0] System.out.prin ...
 - C语言 汉诺塔问题
			
//凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 汉诺塔是由三根杆子A,B,C组成的.A杆上有n个(n>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按 ...
 - 【转】win2008 中iis7设置404页面但返回状态200的问题解决办法
			
今天根据SEO反馈,某个站点中设置的404页面返回的http状态为200.通过站长工具进行查询,发现返回的状态确实为200. 通过彻查问题,发现这个网站的服务器环境为windows2008 服务器为i ...
 - C. Magic Ship  cf   二分
			
C. Magic Ship time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
 - WPF自定义控件(五)の用户控件(完结)
			
用户控件,WPF中是继承自UserControl的控件,我们可以在里面融合我们的业务逻辑. 示例:(一个厌恶选择的用户控件) 后端: using iMicClassBase; using iMicCl ...
 - 单片机与android手机通信(控制LED小灯亮灭)
			
1.单片机实验板功能设计 为验证数据通信内容,让单片机板上的四个按键与android手机客户端上的四个LED灯相互控制:为达到上述基本实验要求,采用单字符传输数据即可,硬件需设计两块相同的单片机电路板 ...
 - display为inline-block的元素有内容和没有内容情况下高度不一致的问题
			
这两天发现一个问题,就是display为inline-block的元素有内容和没有内容情况下高度不一致,虽然不会出现元素中没内容的情况,但是我还是决定必须解决这个问题,可能我有一些轻微的强迫症. &l ...
 - 转://Oracle打补丁方法论
			
成熟的IT企业,往往会有自己的补丁计划.如一年打几次补丁,打哪一个补丁. 在补丁之前,需要进行补丁分析,一份比较完善补丁分析,往往能帮助企业未雨绸缪,提前将可能引发的问题先解决掉,保证生产的稳定和安全 ...