我们都是通过MySQL自带的命令行客户端工具mysql来操作数据库,那如何在python程序中操作数据库呢?

这就用到了pymysql模块,该模块本质就是一个套接字客户端软件,使用前需要事先安装

pip3 install pymysql

mysql 服务端ip = 192.168.0.106

我自己电脑 192.168.0.105

创建数据库db10

mysql> create database db10 charset=utf8;
Query OK, 1 row affected (0.12 sec)

use db10;

创建表

mysql> create table userinfo(id int not null primary key auto_increment,name varchar(50) not null,pwd varchar(50) nott null);
Query OK, 0 rows affected (0.39 sec)

插入表

mysql> insert into userinfo(name,pwd) values('mike',''),('jack','');
Query OK, 2 rows affected (0.19 sec)
Records: 2 Duplicates: 0 Warnings: 0

用户信息表创建好了

mysql> select * from userinfo;
+----+------+-----+
| id | name | pwd |
+----+------+-----+
| 1 | mike | 123 |
| 2 | jack | 456 |
+----+------+-----+
2 rows in set (0.00 sec)

授权

mysql> grant all on *.* to 'root'@'192.168.0.105' identified by '';
Query OK, 0 rows affected (0.15 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

游标就是登录进入mysql的命令行的光标

游标是给mysql提交命令的接口

mysql> 
# 拿到游标对象
cur = conn.cursor()

游标是给mysql提交命令的接口
mysql>
把sql语句传递到这里
rows = cur.execute(sql)
execute拿到结果 不是 我mysql查询的结果,而是 红色 2 的结果 代表拿到2行结果
select * from userinfo;
+----+------+-----+
| id | name | pwd |
+----+------+-----+
| 1 | mike | 123 |
| 2 | jack | 456 |
+----+------+-----+
2 rows in set (0.00 sec)

如果绿色的值 不为0 代表 我输入的账号和密码都输入正确了

 

执行完sql语句要关闭游标和mysql连接

完整代码

import pymysql

input_user = input('usr>>>:').strip()
input_pwd = input('pwd>>>:').strip() mysql_host = '192.168.0.106'
port = 3306
mysql_user = 'root'
mysql_pwd = ''
encoding = 'utf8' # 建立 连接mysql服务端 conn = pymysql.connect(
host=mysql_host, # mysql服务端ip
port=port, # mysql端口
user=mysql_user, # mysql 账号
password=mysql_pwd, # mysql服务端密码
db='db10', # 操作的库
charset=encoding # 读取字符串编码 ) # 拿到游标对象
cur = conn.cursor() '''
游标是给mysql提交命令的接口
mysql>
把sql语句传递到这里
''' # 执行sql语句
'''
执行sql语句之前应该根据我输入的用户名和密码,到数据库里面的表里
查有没有我输入的用户名和密码 '''
# 写一条sql语句往后台去查
# 注意%s需要加引号
sql= 'select * from userinfo where name="%s" and pwd="%s"; '%(input_user,
input_pwd) '''
如果这条sql语句能够查出结果,我输入的账号和密码,数据库是存在的
证明我输入的账号和密码是对的
如果执行sql语句 没有结果就是数据库没有我输入的账号和密码
''' # 把sql语句传给游标执行
rows = cur.execute(sql) # #执行sql语句,返回sql查询成功的记录数目 # 执行完sql语句要关闭游标和mysql连接
cur.close()
conn.close() # 进行判断
if rows:
print("登录成功")
else:
print("登录失败") '''
usr>>>:xxx
pwd>>>:123
登录失败
''' '''
usr>>>:mike
pwd>>>:123
登录成功
'''

如果mysql部署在centos 记得把 iptables 加上

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

还有selinux 关掉

mysql python pymysql模块 基本使用的更多相关文章

  1. mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数

    import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...

  2. mysql python pymysql模块 增删改查 查询 fetchone

    import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...

  3. mysql python pymysql模块 增删改查 查询 字典游标显示

    我们看到取得结果是一个元祖,但是不知道是哪个字段的,如果字段多的时候,就比较麻烦 ''' (1, 'mike', '123') (2, 'jack', '456') ''' 用字典显示查询的结果,也可 ...

  4. mysql python pymysql模块 增删改查 查询 fetchmany fetchall函数

    查询的fetchmany fetchall函数 import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' ...

  5. mysql python pymysql模块 获取插入的最后一条数据的自增ID lastrowid()方法

    调用游标下的lastrowid 可以获取插入之前的表里id字段存放到哪个自增id cursor.lastrowid mysql> select * from userinfo; +----+-- ...

  6. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  7. 第二百七十九节,MySQL数据库-pymysql模块操作数据库

    MySQL数据库-pymysql模块操作数据库 pymysql模块是python操作数据库的一个模块 connect()创建数据库链接,参数是连接数据库需要的连接参数使用方式: 模块名称.connec ...

  8. MySQL之pymysql模块

    MySQL之pymysql模块   import pymysql #s链接数据库 conn = pymysql.connect( host = '127.0.0.1', #被连接数据库的ip地址 po ...

  9. (转)Python中操作mysql的pymysql模块详解

    原文:https://www.cnblogs.com/wt11/p/6141225.html https://shockerli.net/post/python3-pymysql/----Python ...

随机推荐

  1. JLINK与JTAG的区别(转)

    调试ARM,要遵循ARM的调试接口协议,JTAG就是其中的一种.当仿真时,IAR.KEIL.ADS等都有一个公共的调试接口,RDI就是其中的一种,那么我们如何完成RDI-->ARM调试协议(JT ...

  2. 由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1'

    由于更换硬盘没有删除系统自启动读取挂载硬盘导致系统报错:fsck.ext4 unable to resolve 'UUID=a4a7a0f7-b54f-4774-9fb1' 此时进入系统已root模式 ...

  3. MVC C# JS根据后台传入对象设置

    今天(20170401)在借鉴代码的时候,看到如下一串 @if (Model.Product.ID > 0) { <script> $(function () { setSpecLi ...

  4. purge recyclebin之后dba_segments仍然有BIN$段

    现象: purge recyclebin之后dba_segments仍然有BIN$段. 如下,执行了purge recyclebin之后: SQL> select segment_name,SE ...

  5. Qt编写网络调试助手(TCP客户端+TCP服务端+UDP服务端)终极版开源

    时隔半年,对网络调试助手工具进行所有代码重写,这次目录结果整齐的一逼,代码整齐的一逼,非常完善了,打死也不再改版了.这次真的打死也不再改版了.旧版本1:http://www.qtcn.org/bbs/ ...

  6. 【Spring Boot&&Spring Cloud系列】Spring Boot中使用NoSql数据库Redis

    github地址:https://github.com/AndyFlower/Spring-Boot-Learn/tree/master/spring-boot-nosql-redis 一.加入依赖到 ...

  7. Visual Studio for Mac离线安装教程

    Visual Studio for Mac离线安装教程 可以在线安装,也可以离线安装(本次安装博主使用离线,在线安装失败了) 据说翻个墙就可以,有条件的就翻吧 没条件的我于是选择离线安装………… 离线 ...

  8. POP3协议分析

    http://m.blog.csdn.net/bripengandre/article/details/2192111 POP3协议分析 第1章.     POP3概述 POP3全称为Post Off ...

  9. 计算机从加电到系统(Linux)启动完成

    0x0 背景 在我参加的面试和我面试别人.或者参加别人对别人的面试的事后经常遇到的一个问题就是:请从计算机加电开始描述一下计算机启动到操作系统正式启动起来的全过程.这是一个考验对计算机体系结构和基本知 ...

  10. httpWebRequest获取流和WebClient的文件抓取

    httpWebRequest获取流和WebClient的文件抓取 昨天写一个抓取,遇到了一个坑,就是在获取网络流的时候,人为的使用了stream.Length来获取流的长度,获取的时候会抛出错误,查了 ...