系统: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
读取执行结果的方法有:python
fetchall()
把全部的都读出来fetchmany(n)
输出指定数量n的行fetchone()
只返回第一条结果fetchone()
一次只返回一条结果,下次返回第二条,和文件的readlines
相似对应的也会有指针的概念,scroll()
能够指定读取的位置mysql
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