为了账号安全,请及时绑定邮箱和手机立即绑定

mysql之Navicat工具、pymysql模块

标签:
MySQL

1. IDE工具介绍(Navicat)

  为了方便测试,使用IDE工具,就是Navicat,这个工具本质上就是一个socket客户端,可视化的连接mysql服务端的一个工具,并且是图形界面版的。它和直接使用命令行的区别就类似linux和windows系统操作起来的一个区别。

  Navicat下载连接:https://pan.baidu.com/s/1c9AKJsZCbRqpXbCKrj3cdg

  安装教程:https://www.cnblogs.com/q455674496/p/10305890.html


用法:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 备份库/表
 #注意:批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键


2.Pymysql模块

  在python程序中如何操作mysql,它和mysql自带的那个客户端还有navicat是一样的,本质上就是一个套接字客户端,只不过这个套接字客户端是在python程序中用的.

#安装, 在命令行窗口执行以下代码pip3 install pymysql


import pymysql
user=input('用户名: ').strip()
pwd=input('密码: ').strip() 
#链接,指定ip地址和端口,本机上测试时ip地址可以写localhost或者自己的ip地址或者127.0.0.1,然后你操作数据库的时候的用户名,密码,要指定你操作的是哪个数据库,指定库名,还要指定字符集。不然会出现乱码conn=pymysql.connect(host='localhost',port=3306,user='root',password='123',database='student',charset='utf8') 
#指定编码为utf8的时候,注意没有-,别写utf-8,数据库为#得到conn这个连接对象#游标cursor=conn.cursor() #这就想到于mysql自带的那个客户端的游标mysql> 在这后面输入指令,回车执行#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) #获取字典数据类型表示的结果:{'sid': 1, 'gender': '男', 'class_id': 1, 'sname': '理解'} {'字段名':值}
 
 #然后给游标输入sql语句并执行sql语句executesql='select * from userinfo where name="%s" and password="%s"' %(user,pwd) #注意%s需要加引号,执行这句sql的前提是医药有个userinfo表,里面有name和password两个字段,还有一些数据,自己添加数据昂print(sql)
res=cursor.execute(sql)
 #执行sql语句,返回sql查询成功的记录数目,是个数字,是受sql语句影响到的记录行数,其实除了受影响的记录的条数之外,这些记录的数据也都返回了给游标,这个就相当于我们subprocess模块里面的管道PIPE,乘放着返回的数据#all_data=cursor.fetchall()  
#获取返回的所有数据,注意凡是取数据,取过的数据就没有了,结果都是元祖格式的#many_data=cursor.fetchmany(3) #一下取出3条数据,#one_data=cursor.fetchone()  #按照数据的顺序,一次只拿一个数据,下次再去就从第二个取了,因为第一个被取出去了,取一次就没有了,结果也都是元祖格式的
  fetchone:(1, '男', 1, '理解')
  fetchone:(2, '女', 1, '钢蛋')
  fetchall:((3, '男', 1, '张三'), (4, '男', 1, '张一')) 
#上面fetch的结果都是元祖格式的,没法看出哪个数据是对应的哪个字段,这样是不是不太好看,想一想,我们可以通过python的哪一种数据类型,能把字段和对应的数据表示出来最清晰,当然是字典{'字段名':值}#我们可以再创建游标的时候,在cursor里面加上一个参数:cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)获取的结果就是字典格式的,fetchall或者fetchmany取出的结果是列表套字典的数据形式 上面我们说,我们的数据取一次是不是就没有了啊,实际上不是的,这个取数据的操作就像读取文件内容一样,每次read之后,光标就移动到了对应的位置,我们可以通过seek来移动光标
同样,我们可以移动游标的位置,继续取我们前面的数据,通过cursor.scroll(数字,模式),第一个参数就是一个int类型的数字,表示往后移动的记录条数,第二个参数为移动的模式,有两个值:absolute:绝对移动,relative:相对移动#绝对移动:它是相对于所有数据的起始位置开始往后面移动的#相对移动:他是相对于游标的当前位置开始往后移动的
 #绝对移动的演示#print(cursor.fetchall())
 #cursor.scroll(3,'absolute') 
 #从初始位置往后移动三条,那么下次取出的数据为第四条数据#print(cursor.fetchone())
 #相对移动的演示#print(cursor.fetchone())
 #cursor.scroll(1,'relative') 
 #通过上面取了一次数据,游标的位置在第二条的开头,我现在相对移动了1个记录,那么下次再取,取出的是第三条,我相对于上一条,往下移动了一条#print(cursor.fetchone())
 print(res) 
 #一个数字 cursor.close() 
 #关闭游标conn.close()   
 #关闭连接
 if res:    
 print('登录成功')else:    
 print('登录失败')


作者:七、月

原文链接:https://www.cnblogs.com/q455674496/p/10305873.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消