fetchone()函数: 若数据库中已无记录,则返回None 实例:
conn = pymysql.connect( host='localhost', user='root', database='mysq', password='password', port=3306, charset='utf8' ) cur = conn.cursor() sql = 'select * from stuta' #查询所有数据 res = cur.execute(sql) result_one = cur.fetchone() #获取一个信息,并且以元组的形式返回 result_one = cur.fetchone() #获取二个信息,并且以元组的形式返回 ... cur.close() conn.close()fetchmany()函数: fetchmany(size)方法是一次查询多条记录并以元组形式返回,其中size指查询的最多记录数,若已无记录,则无任何消息显示;对于fetchmany()中的参数size如果小于0,则表示去掉size个之后的结果;如果大于0,则表示一次最多查询多少个结果。 实例:
cur = conn.cursor() sql = 'select * from stuta' #查询所有数据 res = cur.execute(sql) result_many = cur.fetchmany(3) #一次查询最多3条记录,并以元组形式返回 print(result_many) cur.close() conn.close()fetchall()函数: 查询所有记录,并以元组形式返回 实例:
cur = conn.cursor() sql = 'select * from stuta' #查询所有数据 res = cur.execute(sql) result_all = cur.fetchall() print(result_all) cur.close() conn.close()附: 由于返回的是元组,可以将其转为列表,具体语法如下:
#再定义游标时作如下设置: conn.cursor(cursor=pymysql.cursors.DictCursor)其返回的是一个列表,列表中包含一个字典;实例:
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = 'select * from stuta' #查询所有数据 res = cur.execute(sql) result_all = cur.fetchall() print(result_all) cur.close() conn.close()注: 移动游标(cursor)的方法
cur.scroll(1,mode='relative')表示将光标相对于原来的位置移动,正值表示向下移动,反之向上移动cur.scroll(1,mode='absolute')表示相对于起始位置进行移动,其中移动距离不能为负相比于查询的步骤,对数据库的增删改操作主要是多了一个提交(commit)的步骤; 实例:
#前面导入模块和建立连接的过程省略。 sno = input() sname = input() cur = conn.cursor() sql = 'insert into stuta(sno,sname) values (%s,%s)' res = cur.execute(sql,[sno,sname]) #这里是为了防止SQL注射攻击所以不采用拼接字符串的方法编写SQL语句,而是在执行的函数里面再将值传送进去。 conn.commit()#增删改操作一定要加入此句,或者说用commit()方法进行提交,如果不提交,数据库中真正的数据是不变的 cur.close() conn.close()从上例可以看出,其基本流程如下:
建立游标:游标名 = 连接名.cursor()编写增删等SQL语句:sql="具体的语句"执行:ret = 游标名.execute(sql,[sno,sname])提交:连接名.commit()关闭连接:cur.close()及conn.close()