资讯专栏INFORMATION COLUMN

Python MySQLdb模块

ccj659 / 815人阅读

摘要:模块安装系统报错安装如果是系统,则需要先安装服务。使用字典形式返回数据执行命令,并不会直接打印可以使用来读取。

Python MySQLdb模块 安装
系统:Ubuntu 14.04
MySQLdb
$ pip install Mysql-python
-> 报错:EnvironmentError: mysql_config not found (安装libmysqlclient-dev)
$ apt-get install libmysqlclient-dev
$ pip install Mysql-python

如果是MAC系统,则需要先安装 mysql 服务。
使用

查数据示例(fetchall()获取数据

import MySQLdb

# 建立连接
conn = MySQLdb.connect(host="127.0.0.1", user="sate", db="dbtest", passwd="password")

# 设置游标
cur = conn.cursor()

# 执行SQL命令,并不会直接返回查询结果,而是返回SQL语句影响的行数
reCount = cur.execute("select * from Products;")
print reCount        # 输出一个数字,是SQL影响的行数

# 使用 fetchall()方法获取数据,循环输出结果,以元祖的方式输出
for data in cur.fetchall():
    print data
    
# 关闭连接
cur.close()
conn.close()
# 结果==》
5
("00001", "hilife")
("00002", "GTL")
("00003", "GLA")
("000004", "TYA")
("000005", "TUH")

插入或者更改数据

import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="sate", db="dbtest", passwd="password")
cur = conn.cursor()

# 定义SQL语句
sql = "insert into Products(prod_id, prod_name) values(%s, %s);"
# 定义数据
params = ("00002", "GLA")
reCount = cur.execute(sql, params)        #为了防止SQL注入,可以使用该方法
conn.commit()   #提交

cur.close()
conn.close()

批量插入数据

import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="sate", db="dbtest", passwd="password")
cur = conn.cursor()

# 要批量插入的数据
li = [
    ("000004", "TYA"),
    ("000005", "TUH")
]
sql = "insert into Products(prod_id, prod_name) values(%s, %s);"
# 批量使用executemany
reCount = cur.executemany(sql, li)        #为了防止SQL注入,可以使用该方法
conn.commit()   #提交

cur.close()
conn.close()

之前查看数据时,返回是元祖形式,有时看起来并不明显,我们可以选择用字典的方式,将列名一起输出。

import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="zheng", db="satezheng", passwd="satezheng")

# 使用字典形式返回数据
cur = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)

# 执行命令,并不会直接打印,可以使用fetchall来读取。
reCount1 = cur.execute("select * from Products")

print reCount1        # 输出一个数字,是SQL影响的行数
for data in cur.fetchall():
    print data
cur.close()
conn.close()
# 结果==》
5
{"prod_name": "hilife", "prod_id": "00001"}
{"prod_name": "GLA", "prod_id": "00002"}
{"prod_name": "GTL", "prod_id": "00003"}
{"prod_name": "TYA", "prod_id": "000004"}
{"prod_name": "TUH", "prod_id": "000005"}

cursor读取执行结果的方法有:

fetchall() 把所有的都读出来

fetchmany(n) 输出指定数量n的行

fetchone() 只返回第一条结果

fetchone() 一次只返回一条结果,下次返回第二条,和文件的readlines类似

对应的也会有指针的概念,scroll()可以指定读取的位置

cur.scroll(0, mode="absolute")    # 绝对指针, 0 就是指针的位置
cur.scroll(-1, mode="relative")    # 相对指针, -1 指针位置向前移一位(指针位置-1)
import MySQLdb

conn = MySQLdb.connect(host="127.0.0.1", user="zheng", db="satezheng", passwd="satezheng")
cur = conn.cursor()

reCount = cur.execute("select * from Products;")

# 使用 fetchone()方法获取数据
data = cur.fetchone()
print data
data = cur.fetchone()
print data
data = cur.fetchone()
print data
# 结果==》
("00001", "hilife")
("00002", "GTL")
("00003", "GLA")

# 使用绝对指针时
...
data = cur.fetchone()
print data
data = cur.fetchone()
print data
cur.scroll(0, mode="absolute")    # 将指针指向 0
data = cur.fetchone()
print data
# 结果==》
("00001", "hilife")
("00002", "GTL")
("00001", "hilife")

# 使用相对指针
data = cur.fetchone()
print data
data = cur.fetchone()
print data
cur.scroll(-1, mode="relative")    # 指针位置减1
data = cur.fetchone()
print data
# 结果==》
("00001", "hilife")
("00002", "GTL")
("00002", "GTL")

cur.lastrawid() 获取自增id

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40889.html

相关文章

  • 【过时】MySQLdbPython 操作 MySQL 数据库

    摘要:模块提供的是类似于接口的,而模块在基础上又做了进一步封装,使之符合的数据库规范。的数据库规范建议了种不同的方式来构造,只支持其中的一种,代码类似于的格式化操作。提交修改,回滚。异常发生时,调用进行回滚。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就没有学习的必要了。 环境:MySQL 5.6.27, Ubuntu 1...

    mj 评论0 收藏0
  • Mac下安装MySQL-python

    摘要:使用安装报错信息中有这两行,没有命令先找下这个命令在哪里,查到是下命令。解决方法添加一个软链接,将命令放到环境变量下然后再执行安装命令看到安装提示有个警告,安装的版本是检测安装是否成功使用方法来检测模块是否安装。 使用easy_install安装 sudo easy_install MySQL-python 报错信息中有这两行,没有mysql_config命令 sh: mysql_co...

    xingqiba 评论0 收藏0
  • Python 连接 MySQL

    摘要:一普通连接方法使用模块普通方式连接。返回结果表示影响的行数。查询时不需要操作,插入更新删除时需要提交。模块点此下载类继承自,表示一个新的连接池。如果需要新的连接池,按照如下格式新增即可。一个连接池可同时提供多个实例对象。 一、普通 MySQL 连接方法   使用模块 MySQLdb 普通方式连接。 #!/usr/bin/env python # _*_ coding:utf-8 _*_...

    williamwen1986 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<