python使用MySQLdb实现连接数据库Mysql
python实现连接数据库mysql的步骤:
一、引入MySQLdb
二、获取与数据库的连接
三、执行SQL语句和存储过程
四、关闭数据库连接
1.什么是MySQLdb?
MySQLdb是用于python连接mysql数据库的接口;
2.连接数据库前确认事项:
(1)数据库名:testdb
(2)数据库的用户名:root 密码为:123456
(3)数据库IP:127.0.0.1
(4)数据库端口:3306
(5)查询数据库tablename表的记录数
3.给出代码
#!/usr/bin/python
# -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接
db = MySQLdb.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='testsb', charset='utf8' ) # 使用cursor()方法获取操作游标
cursor = db.cursor()
sql = """select count(*) from tablename;"""
# 使用execute方法执行SQL语句
cursor.execute(sql)
# 使用 fetchone() 方法获取一条数据
data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接
db.close()
4.或者是:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import MySQLdb as mdb # 连接数据库
# conn = mdb.connect('localhost', 'root', 'root') # 也可以使用关键字参数
conn = mdb.connect(host="127.0.0.1",port=3306,user='root',passwd='123456',db='testdb',charset='utf8')
# # 也可以使用字典进行连接参数的管理
# config = { # 'host': '127.0.0.1',
# 'port': 3306,
# 'user': 'root',
# 'passwd': 'root',
# 'db': 'test',
# 'charset': 'utf8'
# }
# conn = mdb.connect(**config) # 如果使用事务引擎,可以设置自动提交事务,或者在每次操作完成后手动提交事务conn.commit()
conn.autocommit(1) # conn.autocommit(True) # 使用cursor()方法获取操作游标
cursor = conn.cursor() # 因该模块底层其实是调用CAPI的,所以,需要先得到当前指向数据库的指针。
TABLE_NAME = 'bsj'
try:
sql = """select count(*) from vehicle;"""
cursor.execute(sql)
# 返回单个的元组,也就是一条记录(row),如果没有结果则返回None
result=cursor.fetchone() print(result) # 如果没有设置自动提交事务,则这里需要手动提交一次
conn.commit() except:
import traceback
traceback.print_exc() # 发生错误时会滚
conn.rollback()
finally:
# 关闭游标连接
cursor.close() # 关闭数据库连接
conn.close()
5.注意事项:
如果select本身取的时候有多条数据时:
cursor.fetchone():将只取最上面的第一条结果,返回单个元组如('id','title'),然后多次使用cursor.fetchone(),依次取得下一条结果,直到为空。
cursor.fetchall() :将返回所有结果,返回二维元组,如(('id','title'),('id','title')),
---------------------
如果select本身取的时候只有一条数据时:
cursor.fetchone():将只返回一条结果,返回单个元组如('id','title')。
cursor.fetchall() :也将返回所有结果,返回二维元组,如(('id','title'),)
备注:其中的id和title为具体的内容
python在mysql在使用fetchall或者是fetchone时,综合起来讲,fetchall返回二维元组(元组中含有元组),fetchone只返回一维元组。
6.MySQLsb默认查询结果都是返回元组(tuple),通过使用不同的游标可以改变输出格式,这里传递一个cursors.DictCursor参数
import MySQLdb.cursors conn = MySQLdb.connect(host='localhost', user='root', passwd='root', db='test', cursorclass=MySQLdb.cursors.DictCursor)
cursor = conn.cursor()
sql = """select count(*) from tablename;"""
cursor.execute(sql)
r = cursor.fetchall()
print(r)
# 当使用位置参数或字典管理参数时,必须导入MySQLdb.cursors模块 # 也可以用下面的写法
import MySQLdb as mdb
conn = mdb.connect('127.0.0.1', 'root', '', 'testdb')
cursor = conn.cursor(cursorclass=mdb.cursors.DictCursor)
sql = """select count(*) from tablename;"""
cursor.execute(sql)
r = cursor.fetchall()
print(r)
使用MySQLdb取回大结果集的缺点:
普通的操作无论是fetchall()还是fetchone()都是先将数据载入到本地再进行计算,大量的数据会导致内存资源消耗光。
解决方法:
python使用MySQLdb实现连接数据库Mysql的更多相关文章
- Python安装MySQLdb并连接MySQL数据库
当然了,前提是你已经安装了Python和MySQL.我的Python是2.6版本的. Python2.6的“Set”有点兼容性问题,自己照着改一下: http://sourceforge.net/fo ...
- 案例学python——案例二:连接数据库MySql
调侃的话:案例一跑完之后,欣赏把玩了一番.人就有点飘飘然,昨天除了做饭吃饭,就是玩三国杀,江郎才尽,今天周一,不飘了,敲点代码,看看Python操作数据库有啥不一样的. 前期准备: 1.数据库 电脑上 ...
- python使用MySQLdb模块连接MySQL
1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...
- Ubuntu下Python使用MySQLdb远程连接数据库的常见问题及解决方案
本文基于http://www.cnblogs.com/fnng/p/3565912.html这篇博文,学习使用MySQLdb过程中遇到下面这些问题. 1. 安装MySQLdb时运行sudo pytho ...
- Python+request 使用pymysql连接数据库mysql的操作《十》
使用指南.pymysql支持python2.7同时也支持python3.x.当前我用的是python2.7.所以过断选择了pymysql的使用,这里注意几点.一般我们连接数据库为了安全起见,都会要求按 ...
- python的MySQLdb库链接MySQL入门代码
链接:http://www.runoob.com/python/python-mysql.html
- Python+request 使用pymysql连接数据库mysql的操作,基础篇《十一》
笔记记录: (1)pymysql中所有的有关更新数据(insert,update,delete)的操作都需要commit,否则无法将数据提交到数据库,既然有了commit(),就一定有对应的rollb ...
- Ubuntu安装MySQL和Python库MySQLdb步骤
一.安装MySQL服务器和客户端 执行以下命令: sudo apt-get install mysql-server-5.6 mysql-client-5.6 sudo apt-get install ...
- Python的MySQLdb模块安装,连接,操作,增删改
1. 首先确认python的版本为2.3.4以上,如果不是需要升级python的版本 python -V 检查python版本 2. 安装mysql, 比如安装在/usr/local/my ...
随机推荐
- kubernetes 学习资料
谷歌大神详解 Kubernetes 配置管理最佳方法 https://www.kubernetes.org.cn/3031.html all in on kubernetes https://gith ...
- Asp.Net任务Task和线程Thread
Task是.NET4.0加入的,跟线程池ThreadPool的功能类似,用Task开启新任务时,会从线程池中调用线程,而Thread每次实例化都会创建一个新的线程.任务(Task)是架构在线程之上的, ...
- C语言 · 还款计算
标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入). 比如说小明在银行贷款1万元.贷款年化利率为5%,贷款期限为24个月. ...
- Linux中rz和sz命令用法详解
http://www.111cn.net/sys/linux/67810.htm 在linux中rz 和 sz 命令允许开发板与主机通过串口进行传递文件了,下面我们就来简单的介绍一下rz 和 sz 命 ...
- SparkStreaming基本架构及使用
1.简介 Spark Streaming处理的数据流图: Spark Streaming在内部的处理机制是,接收实时流的数据,并根据一定的时间间隔拆分成一批批的数据,然后通过Spark Engine处 ...
- 大数据:Parquet文件存储格式
一.Parquet的组成 Parquet仅仅是一种存储格式,它是语言.平台无关的,并且不需要和任何一种数据处理框架绑定,目前能够和Parquet适配的组件包括下面这些,可以看出基本上通常使用的查询引擎 ...
- 三层构架和 MVC的区别和理解
1.三层构架和 MVC 意思一样么? Java WEB 开发中,服务端通常分为表示层.业务层.持久层,这就是所谓的三层架构: 1.表示层负责接收用户请求.转发请求.生成数据的视图等: 2.业务层负责组 ...
- OE1、OE2、ON1、ON2路由有什么区别?
OSPF的路由类型: 1 .O 域内路由 2 .O/A 域间路由 3 .OE1 域外路由,会累加METRIC值(默认20) 4 .OE2 域外路由,不累加METRIC值(默认20),由外部 ...
- centos6.5上安装ftp服务
这是之前搭建过,但没记录,因为昨天使用人过来说使用有问题,突然发现没有记录,好心慌,现在的记忆真的只有1周而已,穷和老都是原罪啊!! 环境准备:centos6.5 vm 安装ftp:
- ScheduledThreadPoolExecutor实现原理
ScheduledThreadPoolExecutor实现原理 博客分类: concurrency java 自jdk1.5开始,Java开始提供ScheduledThreadPoolExecut ...