python操作mysql数据库的常用方法使用详解

python操作mysql数据库

1、环境准备:

Linux

安装mysql: apt-get install mysql-server

安装python-mysql模块:apt-get install python-mysqldb


Windows

下载安装mysql
python操作mysql模块:MySQL-python-1.2.3.win32-py2.7.exe 或 MySQL-python-1.2.3.win-amd64-py2.7.exe

下载地址:http://blog.csdn.net/reblue520/article/details/51702485

不安装python-mysqldb模块会报错:

Unused import: MySQLdb,需要安装pytho-mysqldb

mysql图形界面:Navicat_for_MySQL 方便观察数据库的变化

安装python开发环境,具体可参考:windows下搭建eclipse关于python的开发环境及初始化参数配置

2、一个简单连接数据库的例子:

import MySQLdbtry:conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='test',port=3306)cur=conn.cursor()cur.execute('select user,password from user')cur.close()conn.close()
except MySQLdb.Error,e:print "Mysql Error %d: %s" % (e.args[0], e.args[1])


注意修改你连接的数据库,主机IP,用户名,密码。

3、插入数据,批量插入数据,更新数据的例子:

#!/usr/bin/env python
#_*_ coding:utf-8 _*_import MySQLdbtry:conn = MySQLdb.Connect(host='192.168.8.40',user='root',passwd='root',db='mysql',port=3306)cur = conn.cursor()rs = cur.execute('select user,password,host from user')rs = cur.execute('create database if not exists python')conn.select_db('python')cur.execute('create table test(id int,info varchar(30))') value = [1,'hi jack']cur.execute('insert into test values(%s,%s)',value)values = []for i in range(20):values.append((i,'hi jack' + str(i)))cur.executemany('insert into test values(%s,%s)',values)cur.execute('update test set info="i am jack" where id=3')conn.commit()cur.close()conn.close()
except MySQLdb.Error,e:print 'mysql error msg: %d,%s' % (e.args[0],e.args[1])


请注意一定要有conn.commit()这句来提交事务,要不然不能真正的插入数据

4、常用获取数据的一些方法



#!/usr/bin/env python
#_*_ coding:utf-8 _*_import MySQLdbtry:conn = MySQLdb.Connect(host='192.168.8.40',user='root',passwd='root',db='mysql',port=3306,charset='utf8')cur = conn.cursor()conn.select_db('python')count = cur.execute('select * from test') print 'there has %s rows record' % countresult = cur.fetchone()print resultprint 'id: %s info %s' % resultresult2 = cur.fetchmany(3)for record in result2:print recordprint '=='*10cur.scroll(0,mode='absolute')result3 = cur.fetchall()for record in result3:print record[0] ,'---',record[1]conn.commit()cur.close()conn.close()
except MySQLdb.Error,e:print 'mysql error msg: %d,%s' % (e.args[0],e.args[1])


查询后中文会显示乱码,但在数据库中却是正常的,发现用一个属性有可搞定:

在Python代码 

conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python') 中加一个属性:
 改为:
conn = MySQLdb.Connect(host='localhost', user='root', passwd='root', db='python',charset='utf8') 
charset是要跟你数据库的编码一样,如果是数据库是gb2312 ,则写charset='gb2312'。



常用的函数:



然后,这个连接对象也提供了对事务操作的支持,标准的方法
commit() 提交
rollback() 回滚


cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, args):执行单挑sql语句,但是重复执行参数列表里的参数,返回值为受影响的行数
nextset(self):移动到下一个结果集


cursor用来接收返回值的方法:
fetchall(self):接收全部的返回结果行.
fetchmany(self, size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone(self):返回一条结果行.
scroll(self, value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果 mode='absolute',则表示从结果集的第一行移动value条.

转载于:https://www.cnblogs.com/reblue520/p/6239778.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言稀疏矩阵的存储,C语言:数据结构-稀疏矩阵的压缩存储

https://m.toutiaocdn.com/group/6712258385510662667/?appnews_article&timestamp1562855219&req_id201907112226580100230300187166DEA&group_id6712258385510662667(1)稀疏矩阵的特点在一个mn的矩阵中,设矩阵中有i个元素不为零,并令△i/…

计算机C语言课交作业怎么交,第一份c语言作业

2.1 你对软件工程专业或者计算机科学与技术专业了解是怎样?•答案: 软件工程专业是个年轻的专业,紧跟这个信息化的新时代。我学习它是因为感兴趣,经过一周的学习,我了解了一些 该专业课程主要是c语言程序设计和计算机导…

技术淘宝

? ? ? ? 精度前端学习 —— 前端开发100天(置顶) http://alloyteam.github.io/CodeGuide/https://github.com/AlloyTeam/CodeGuide cmd控制台的小技巧:可以直接将文件夹/文件丢进去,这样就会打印出该路径了。 舒服的字体家族…

vue 导出_Vue核心知识:8.3 vuex在vue-cli中的应用,文件之间的导出与引入

问题:vuex在vue-cli中的应用第一步:npm下载vuex资源包:npm install vuex --save第二步:在 src/main.js 中引入import Vue from vue import Vuex from vuexVue.use(Vuex)import store from ./vuex/store第三步:在 src 下…

android界面设计字体大小,Andoird用户界面设计上手指南:设置字体大小

教程详解技术应用: AndroidOS / Android SDK难易程度: 简单预计完成时间: 15分钟【51CTO译文】在本文中,我们将介绍一些简单的处理方式,帮助开发人员轻松编写出能够应对各类设备型号的应用程序文本方案,同时为用户提供自定义文字尺寸功能。别…

回溯算法解决八皇后_4皇后问题和使用回溯算法的解决方案

回溯算法解决八皇后4-皇后问题 (4 - Queens problem) In 4- queens problem, we have 4 queens to be placed on a 4*4 chessboard, satisfying the constraint that no two queens should be in the same row, same column, or in same diagonal. 在4个皇后问题中 &#xff0c…

怎么重置blockinput的锁_OPPOA9锁屏密码忘了怎么办? OPPO忘记锁屏密码的解决办法...

看点:iPhone X原装屏与国产屏有哪些区别?看点:换7P、8P屏幕:C11和DTP和DKH的区别狮淘:不锈钢拆机片5个只需9.9元!包邮!每天10名OPPOA9锁屏密码忘了怎么办?OPPO A9手机忘记了锁屏密码…

Android的面孔_Actiyity

一、什么是Activity&#xff1f; 简单的说&#xff1a;Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activity构成&#xff0c;都会在Manifest.xml中指定一个主的Activity&#xff0c;如下设置 <actionandroid:name"android.in…

vsco怎么两个滤镜叠加_10 款超美的 VSCO 调色滤镜,怎么用都好看!

VSCO 里的滤镜简单 又 好看可太让人喜欢了&#xff01;但是 VSCO 的滤镜实在太多太多了有点让人眼花缭乱~今天旅拍菌请来了 摄影博主 丹丹儿啊专门来为大家盘点一波超美的 VSCO 滤镜合集&#xff01;怎么用 都很好看~微博&#xff1a;丹丹儿啊01滤镜&#xff1a;1ND1锐化&#…

Kubernetes Master High Availability 高级实践

才云科技云开源高级工程师唐继元受邀DBAplus社群&#xff0c;在线分享《Kubernetes Master High Availability 高级实践》&#xff0c;介绍如何构建Kubernetes Master High Availability环境。 以下是分享实录&#xff1a; 大家好&#xff0c;我是才云科技的唐继元&#xff0c;…

分布式系统的唯一ID

2019独角兽企业重金招聘Python工程师标准>>> 需求 为什么需要唯一ID 让分布式系统中的需要辨别的元素&#xff0c;都能有唯一的辨识标志。 几乎所有的业务系统&#xff0c;都有生成一个记录标识的需求&#xff0c;例如&#xff1a; 消息标识&#xff1a;message-id订…

android放微信@功能,Android仿微信语音消息的录制和播放功能

一、简述效果&#xff1a;实现功能&#xff1a;长按Button时改变Button显示文字&#xff0c;弹出Dialog(动态更新音量)&#xff0c;动态生成录音文件&#xff0c;开始录音&#xff1b;监听手指动作&#xff0c;规定区域。录音状态下手指划出规定区域取消录音&#xff0c;删除生…

sap中泰国有预扣税设置吗_泰国的绘图标志| Python中的图像处理

sap中泰国有预扣税设置吗A colored image can be represented as a 3 order matrix. The first order is for the rows, the second order is for the columns and the third order is for specifying the color of the corresponding pixel. Here we use the BGR color format…

Attach Volume 操作(Part II) - 每天5分钟玩转 OpenStack(54)

上一节我们讨论了 attach volume 操作中 cinder-api 的工作&#xff0c;本节讨论 cinder-volume 和 nova-compute 如何将 volume attach 到 Instance。 cinder-volume 初始化 volume 的连接 cinder-volume 接收到 initialize_connection 消息后&#xff0c;会通过 tgt 创建 ta…

FMDB的介绍

2019独角兽企业重金招聘Python工程师标准>>> FMDB方法的介绍 1.首先我们需要创建一个FMDatabase实例&#xff1a; (FMDatabase*)DataBaseSigonInstance { //数据库初始化 NSString *homeDir NSHomeDirectory(); //NSLog("%",homeDir); NSString *dbPath …

网络克隆软件_网文生成器,克隆的是骗钱“病毒”

文章克隆器页面。图据北京晚报如今不论男女老少&#xff0c;多半喜欢用手机收集信息、浏览自己关注的话题。有的时候&#xff0c;人们会发现&#xff0c;不少亲朋发来的链接或者公众号推送的文章&#xff0c;长得特别像&#xff0c;但多少有那么些微不同。其实&#xff0c;不是…

使用python 对图片进行水印,保护自己写的文章

1&#xff0c;关于文章被爬 说起来挺桑心的&#xff0c;好不容易写的文章&#xff0c;被爬走。 用个搜索引擎搜索都不是在第一位&#xff0c;写的文章全给这些网站提供流量了。 这种网站还居多广告。 还是抱怨少点吧。csdn对于这些事情也是无所作为啊。 最起码的防盗链也不…

android layout_width 属性,android:layout_weight属性详解

在android开发中LinearLayout很常用&#xff0c;LinearLayout的内控件的android:layout_weight在某些场景显得非常重要&#xff0c;比如我们需要按比例显示。android并没用提供table这样的控件&#xff0c;虽然有TableLayout&#xff0c;但是它并非是我们想象中的像html里面的t…

angular的$http发送post,get请求无法传送参数的问题

2019独角兽企业重金招聘Python工程师标准>>> 用$http进行异步请求的时候发现了一个奇怪的事情&#xff0c;用$http.post(url,data)的方法进行请求&#xff0c;后台死活接收不到data的参数&#xff0c;真是百思不得姐啊..... 折腾了老半天才在stackoverflow上找到答案…

怎样解决Word文档图标无法正常显示的问题?

此类问题是由于 Word 程序相关组件损坏导致&#xff0c;可以通过下面的方案来解决&#xff1a;步骤/方法按键盘上的 Windows 徽标健 R 键&#xff0c;输入 regedit&#xff0c;按回车键。&#xff08;若弹出用户账户控制窗口&#xff0c;请允许以继续&#xff09;对于 Word 200…