摘要:模块安装系统报错安装如果是系统,则需要先安装服务。使用字典形式返回数据执行命令,并不会直接打印可以使用来读取。
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
摘要:模块提供的是类似于接口的,而模块在基础上又做了进一步封装,使之符合的数据库规范。的数据库规范建议了种不同的方式来构造,只支持其中的一种,代码类似于的格式化操作。提交修改,回滚。异常发生时,调用进行回滚。 NOTE(2017-11-18): MySQLdb 不支持 Python 3,而 Python 3 是主流,所以就没有学习的必要了。 环境:MySQL 5.6.27, Ubuntu 1...
摘要:使用安装报错信息中有这两行,没有命令先找下这个命令在哪里,查到是下命令。解决方法添加一个软链接,将命令放到环境变量下然后再执行安装命令看到安装提示有个警告,安装的版本是检测安装是否成功使用方法来检测模块是否安装。 使用easy_install安装 sudo easy_install MySQL-python 报错信息中有这两行,没有mysql_config命令 sh: mysql_co...
摘要:一普通连接方法使用模块普通方式连接。返回结果表示影响的行数。查询时不需要操作,插入更新删除时需要提交。模块点此下载类继承自,表示一个新的连接池。如果需要新的连接池,按照如下格式新增即可。一个连接池可同时提供多个实例对象。 一、普通 MySQL 连接方法 使用模块 MySQLdb 普通方式连接。 #!/usr/bin/env python # _*_ coding:utf-8 _*_...
阅读 1745·2021-11-24 09:39
阅读 3265·2021-11-22 15:24
阅读 3163·2021-10-26 09:51
阅读 3347·2021-10-19 11:46
阅读 2944·2019-08-30 15:44
阅读 2280·2019-08-29 15:30
阅读 2584·2019-08-29 15:05
阅读 832·2019-08-29 10:55