Python对数据库的操作(MySQL,redis、MongoDB)
一、操作MySQL数据库
安装pymysql:
需要通过pip install pymysql进行安装。
查询数据:fetchone、fetchmany(n)、fetchall()
import pymysql
#建立mysql连接,ip、端口、用户名、密码(passwd,不能写成其他,例如:pwd或者p,否则报错)、库名
conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='szz', port=3306, charset='utf8')
#创建游标
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) #指定cursor的类型为字典,返回结果类型是字典,不再是元组
#执行sql,返回值是int,查询出来的结果有几条
cur.execute('select * from test')
#获取第一条数据,游标cur所在的位置为1,游标从0开始,查询结果类型为:字典
row_1 = cur.fetchone()
cur.scroll(0, mode='absolute') #将游标移动到初始位置
#获取前n行数据
row_2 = cur.fetchmany(n)
cur.scroll(0, mode='absolute') #将游标移动到初始位置
#获取所有数据,返回结果类型是:list,里面元素是字典
row_3 = cur.fetchall()
cur.scroll(0, mode='absolute') #将游标移动到初始位置
print(row_2)
#关闭游标
cur.close()
#关闭连接
conn.close()
增加、更新、删除数据
import pymysql #建立mysql连接 conn = pymysql.connect(host='127.0.0.1', user='root', passwd='123456', db='szz', port=3306, charset='utf8') #创建游标 cur = conn.cursor(cursor=pymysql.cursors.DictCursor) #指定cursor的类型为字典,返回结果类型是字典,不再是元组 #执行sql sql = 'insert into test values(5, "断点", "e10adc3949ba59abbe56e057f20f883e")' sql_update = 'update test set name="薛之谦" where id=2 ' sql_del = 'delete from test where id = 3' cur.execute(sql_del) #insert、update、delete语句需要进行commit,否则无法保证修改或者新建的数据 conn.commit() #关闭游标 cur.close() #关闭连接 conn.close()
cursor的相对、绝对位置移动
import pymysql
#建立mysql连接
conn = pymysql.connect(host='192.168.3.66', user='root', passwd='123456', db='szz', port=3306, charset='utf8')
#创建游标
cur = conn.cursor(cursor=pymysql.cursors.DictCursor) #指定cursor的类型为字典,返回结果类型是字典,不再是元组
num = cur.execute('select * from testlhl')
print(num) #返回结果是int类型
row_1 = cur.fetchone() # 此时游标的位置在1,数据库取值从0下标开始,获取数据库第一条数据
cur.scroll(2, mode='absolute') #absolute绝对位置,直接是将游标从0位置移动到指定的位置2
row_2 = cur.fetchone() #读取数据库第3条数据,游标在3位置
cur.scroll(2, mode='relative') #relative相对位置,相对于游标当前所在位置,进行移动,移动1位,游标在4位置,若相对移动的位置超过下标,则报out of range
row_3 = cur.fetchone() #读取第5条数据
#关闭游标
cur.close()
#关闭连接
conn.close()
mysql的增删改查公共方法
def getconn(host, user, passwd, db, sql, port=3306,charset='utf8'): conn = pymysql.connect(host=host, user=user, passwd=passwd, port=port, db=db, charset=charset) #建立连接 cur = conn.cursor(cursor=p
