操作mysql

#建连接
#设游标
#执行sql语句
import pymysql
ip ="1.1.1.1"
user = 'admin'
password="123456" #需是字符串
db='student'
port=3306
charset = 'utf8' #注意是utf8,而不是utf-8
conn = pymysql.connect(host=ip , port=port,
user=user, password=password,
db=db, charset=charset
) #建立连接,port可以不写,默认是3306
cur= conn.cursor(pymysql.cursors.DictCursor)#建立游标
sql = 'select *from user limit 10;'
cur.execute(sql) #执行sql语句,不返回结果
#conn.commit() #提交;执行insert、update的时候要commit一下;如果不写的话,conn中加一个参数autocommit=True,自动提交
one = cur.fetchone()  #获取一条数据,再次执行,获取第二条;若执行fetchall后,其他数据都取不到了,类似于文件指针
many = cur.fetchmany() #获取多条数据,输入几就是取几条
all = cur.fetchall() #获取所有数据,数据量比较小的时候使用

表比较多的时候,可以用遍历游标的方式:
# for line in cursor:  
# print(line)
print(one)   #cur加上pymysql.cursors.DictCursor,这个取出来是一个字典
print(many) #cur加上pymysql.cursors.DictCursor,这个取出来是一个list,里面值是字典
print(all) #cur加上pymysql.cursors.DictCursor,这个取出来是一个list,里面值是字典

cur.close() #关游标
conn.close() #关连接

#cur= conn.cursor() 时,fetchall和fetchmany结果返回的是二维数组



##封装成函数
def op_mysql(sql):
db_info = {'user': 'jxz', 'password': '123456',
'host': '1.1.1.1', 'db': 'stu', 'port': 3306, 'charset': 'utf8',
'autocommit': True}
conn = pymysql.connect(**db_info) # 建立连接
cur = conn.cursor(pymysql.cursors.DictCursor) # 游标
cur.execute(sql) # 执行sql语句,insert 、update 、delete
result = cur.fetchall()
cur.close()
conn.close()
return result



posted @ 2019-10-27 18:46  哈哈一笑~~~  阅读(132)  评论(0编辑  收藏  举报