首页 > 数据库 >Navicat软件、python操作MySQL

Navicat软件、python操作MySQL

时间:2023-04-09 15:45:42浏览次数:50  
标签:语句 name python MySQL pymysql Navicat cursor SQL print

目录

Navicat软件

1. 软件简介

第三方开发的用来充当数据库客户端的简单快捷的操作界面
	无论第三方软件有多么的花里胡哨,底层的本质还是SQL
能够操作数据库的第三方可视化软件有很多,其中针对MySQL最出名的就是Navicat

1.浏览器搜索Navicat直接下载
	版本很多、能够充当的数据库客户端也很多
    # 它不是免费的,收费的,免费试用14天
2.破解方式
	先试用再破解、直接下载破解版(老版本)、修改试用日期
    
去官网下载:https://www.navicat.com.cn/products/

Navicat就是MySQL的第三方客户端

2.navicat基本操作

1.连接MySQL
	连接 --> MySQL --> 
    连接名(自己起个名字)
    
# 127.0.0.1---------目前记忆是一样的-------->localhost   

# 补充
连接mysql命令:
mysql -h127.0.0.1 -P3306 -uroot -p123456
-h(host):主机,填写ip
-P:端口,3306
    
# 自己电脑
mysql -u root -p 



2.新建数据库
	右键选择新建数据库
    字符集:unf8/utf8mb4
    排序规则:utf8_general_ci
# 客户端和Navicat软件绑定了,客户端的数据会直接在Navicat中显示,而Navicat软件创建的表或数据,在客户端也能够查到

3.新建表
	进入库--> 表右击新建表
    table键切换
    id --> 对于主键最好加上注释:主键id.自动递增在左下角
    默认值:EMPTY STRING --> Null
    SQL预览:建立字段还没有保存时,可以直接查看它,看SQL语句
    注释:于字段同级别的注释是针对于表的注释。
        
4.添加记录
	双击进入表
    SQL语句:右侧DDL,是创建表的完整语法
    填写完数据之后,左下角对勾保存
    
5.筛选
	点击加号
    点击字段,可以切换字段名;包含,可以切换筛选条件;<?>,可以切换值。也可以多条件筛选
    点击应用
    
6.已经建好的表,更改表结构
	右击表 --> 设计表
    
7.执行SQL语句
	点击新建查询
    选择连接和库
    内部就可以直接写SQL语句了,有代码提示功能
    点击运行
    语句过长,可以使用:美化SQL
        
8.导出
	右键--> 转储SQL文件
    
9.导入
	方式1:新建库,直接复制SQL语句,运行
    方式2:右击库,运行SQL文件
    
10.数据传输
# 复制表,库内的所有表
	工具 --> 数据传输
    
11.模型
	# 可以更好的理解表与表之间的关系
	库右键 --> 逆向数据模型

python操作MySQL

# 需要借助于第三方模块
# mysqldb
# mysqlclient...  在Django中用,要比这两个模块好用,一般情况下,安装不上(后期讲解)
# pymysql
安装:
  pip install pymysql;

1.链接、执行sql、关闭(游标)

import pymysql  # 操作MySQL的第三方模块

# 1.连接MySQL服务端
# 此时python链接mysql,python就是一个客户端
# 既然是客户端,那就需要链接服务端,保证服务端的正常运行
conn = pymysql.connect(  # conn链接对象
    host='127.0.0.1',
    port=3306,
    user='root',
    password='1113',
    db='db6',  # 数据库必须是存在的
    charset='utf8'
)

# 2.获取一个游标
# 游标对象就相当于光标(闪着的哪个)
# cursor = conn.cursor()  # 执行完毕返回的结果集默认以元组显示 ((),())
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # [{},{}]

# 3.先写SQL语句,查询数据
sql = 'select * from t2'

# 4.发送SQL语句
affect_rows = cursor.execute(sql)  # execute也有返回值,接收的是SQL语句影响的行数
print(affect_rows)  # 2,行数是2

# 5.获取SQL语句执行之后的结果,游标对象点方法
# ((1, 'kevin', 20), (2, 'tom ', 22))
# [{'id': 1, 'name': 'kevin', 'age': 20}, {'id': 2, 'name': 'tom ', 'age': 22}]
print(cursor.fetchall())  

2.字典可以循环取值: # 这一步跟上一步的打印只能存在一个,同时存在,上一步完全输出了,循环只能是空。
for i in cursor1.fetchall(): 
    print(i)

2.查询结果

1.获取数据
    fetchall()  获取所有的结果
    fetchone()	获取结果集的第一个数据
    fetchmany() 获取指定数量的结果集
    ps:注意三者都有类似于文件光标移动的特性

2.光标滚动(很少用)
	cursor.scroll(移动个数,模式)
    cursor.scroll(1)  # 默认模式,基于当前位置往后移动
    cursor.scroll(1,'relative')
    cursor.scroll(0,'absolute')  # 基于数据的开头往后移动

代码操作:
1.fetchall()
一次性拿到全部后,执行同样的语句,就输出空列表(第一次取完了,再取就没有了)

# 5.拿到查询结果
print(cursor1.fetchall())  # [{'id': 1, 'name': 'kevin', 'age': 20}, {'id': 2, 'name': 'tom ', 'age': 22}]
print(cursor1.fetchall())  # []

2.分布拿取fetchone()

# 5.拿到查询结果
print(cursor1.fetchone())  # {'id': 1, 'name': 'kevin', 'age': 20}
print(cursor1.fetchone())  # {'id': 2, 'name': 'tom ', 'age': 22}
print(cursor1.fetchone())  # None

3.指定拿取:fetchmany(1),括号内的数据是拿取数量,表中没有那么多就有几条取几条

# 5.拿到查询结果
# print(cursor1.fetchmany(1))  # [{'id': 1, 'name': 'kevin', 'age': 20}]
# print(cursor1.fetchmany(2))  # [{'id': 1, 'name': 'kevin', 'age': 20}, {'id': 2, 'name': 'tom ', 'age': 22}]
print(cursor1.fetchmany(5))  # [{'id': 1, 'name': 'kevin', 'age': 20}, {'id': 2, 'name': 'tom ', 'age': 22}]

3.增删改查

autocommit=True  # 针对增、删、改,自动确认(直接配置)

conn.commit()  # 针对增、删、改,需要二次确认(代码确认)

代码验证:
方式1:代码确认

'''插入数据'''
"""除了查询之外的语句,都需要二次确认"""
import pymysql  # 操作MySQL的第三方模块

# 1.链接MySQL
# 此时python链接mysql,python就是一个客户端
# 既然是客户端,那就需要链接服务端,保证服务端的正常运行
conn = pymysql.connect(  # conn链接对象
    host='127.0.0.1',
    port=3306,
    user='root',
    password='1113',
    db='db6',  # 数据库必须是存在的
    charset='utf8'
)

# 2.获取一个游标
cursor2 = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 3.先写SQL语句
sql = 'insert into t2(name,age) values("tank",33)'

# 4.执行SQL语句
affect_rows = cursor2.execute(sql)

# 二次确认,链接对象.commit()
conn.commit()
print(affect_rows)

方式2:直接在连接对象时加一个参数,autocommit=True
就不需要再写conn.commit()这句话

conn1 = pymysql.connect(  # conn链接对象
    host='127.0.0.1',
    port=3306,
    user='root',
    password='1113',
    db='db6',  # 数据库必须是存在的
    charset='utf8',
    autocommit=True
)

# 2.获取一个游标
cursor3 = conn1.cursor(cursor=pymysql.cursors.DictCursor)

# 3.先写SQL语句
sql = 'insert into t2(name,age) values("tank",33)'

# 4.执行SQL语句
affect_rows = cursor3.execute(sql)
print(affect_rows)  # 1

4.使用pymysql写一个注册和登录的案例

# 先写一个注册和登录功能
import pymysql

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='1113',
    db='db6',
    charset='utf8',
    autocommit=True
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

# 1.获取用户名和密码
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
# 2.构造查询SQL语句
sql = 'select * from userinfo where name="%s" and pwd="%s"' %(username,password)
# 3.发送给服务端并执行SQL语句
cursor.execute(sql)
# 4.获取执行结果
res = cursor.fetchall()
if res:
    print('登录成功')
    print(res)
else:
    peint('用户名或密码错误')

        
# 注册
# 1.获取用户名和密码
username = input('usename:>>>').strip()
password = input('password:>>>').strip()
# 2.构造查找SQL语句
sql = "insert into userinfo(name,password) values('%s','%s')" % (username, password)
# 3.发送给服务端并执行SQL语句
cursor.execute(sql)
# 4.获取执行结果
res = cursor.fetchall()
print(res)


标签:语句,name,python,MySQL,pymysql,Navicat,cursor,SQL,print
From: https://www.cnblogs.com/zjyao/p/17299003.html

相关文章

  • Python 操作 MongoDB
    Python操作MongoDB目录Python操作MongoDB1MongoDB简介1.1NoSQL的优点/缺点1.2使用MongoDB注意事项1.3MongoDB数据类型2MongoDB命令2.1基础命令2.2集合的增删改查2.2.1增加2.2.2查询2.2.3改2.2.4删除3python操作MongoDB1MongoDB简介MongoDB是一个基于分......
  • 【python】使用build模块进行简单打包分发
    build模块build模块是python3.6引入的一个简单的打包工具,和setuptools的区别是,build更加灵活简单,而setuptools提供了很多的高级功能,可以更加灵活的满足不同的项目需求   也就是说,build提供了一个简单的标准库级别的构建和打包工具,而setuptools更加强大安装buildpython......
  • 一文弄懂Python中的sort和sorted函数
    1.引言Python中的sort()和sorted()函数主要用于按升序或降序对数据进行排序。在本文中比较用于列表时,两个函数在编程和语法上的差异。闲话少说,我们直接开始吧!2.Sort()函数基本用法用于列表排序的sort函数的语法如下:list.sort(reverse=False,key=None)用法如下:参数reverse:默认为......
  • 21天掌握Python 3/21 编码
    如果输出中文字符 "你好,世界" Python有可能会碰到中文编码问题。Python文件中如果未指定编码,在执行过程会出现报错:#!/usr/bin/pythonprint("你好,世界")以上程序执行输出结果为:File"test.py",line2SyntaxError:Non-ASCIIcharacter'\xe4'infiletest.pyonline2,bu......
  • python把结果保存到word
    开始Python操作Word用到了模块python-docx,它把word分割成很多段落,如下结构:document>paragraph/picture>run其中document是整个文档对象,paragraph是段落run是段落下的按照样式来分割的小块,每块有独立的样式。安装方式pipinstallpython-docx示例fromdocximportDo......
  • Centos 7 安装 Python3.9.16
    1、下载Python官网(https://www.python.org/downloads/)对应的安装包,选择3.9.16的linux版本wgethttps://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz2、解压tgz包tarzxvfPython-3.9.16.tgz-C/opt3、创建Python-3.6.5安装目录mkdir/usr/local/python34、安装依......
  • Python-venv-创建和管理虚拟环境
    Python-venv-创建和管理虚拟环境https://docs.python.org/3/tutorial/venv.html概述Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。这意味着一个Pytho......
  • Python中的抽象基类介绍
        从上一篇文章(Python中鸭子类型与多态介绍)中,我们了解到了python的鸭子类型和多态。继承提供了多态的基础,而多态则使继承更加灵活和强大。那么今天,让我们再来一起了解一下python里面的抽象基类。Python中的抽象基类(AbstractBaseClasses,简称abc)是一种特殊的类,它用于定义一......
  • 讲解MySQL8.0备份与还原工具(mysqlbackup)
    一、安装mysqlbackup下载登录oracleedelivery,进入下载连接选择适合你系统的版本下载,在这里我使用的是银河麒麟KylinOSServerV10SP2,因此我选择一个通用的预编译二进制的tar包,如下图:没有Oracleedelivery账号的朋友可以到私信我索取软件安装包。安装[root@light]tarx......
  • mysql 查询练习题
    1.查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。selectd.deptno,d.dname,d.loc,r.countfromdeptd,(selectdeptno,count(*)countfromempgroupbydeptno)rwhered.deptno=r.deptno;2.列出薪金比smith高的所有员工。select*fro......