摘要:模块安装系统报错安装如果是系统,则需要先安装服务。使用字典形式返回数据执行命令,并不会直接打印可以使用来读取。
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 _*_...
阅读 1562·2021-11-24 09:39
阅读 2995·2021-11-22 15:24
阅读 3057·2021-10-26 09:51
阅读 3242·2021-10-19 11:46
阅读 2857·2019-08-30 15:44
阅读 2178·2019-08-29 15:30
阅读 2506·2019-08-29 15:05
阅读 739·2019-08-29 10:55