day 61 pymysql
Python3连接MySQL
本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用。
PyMySQL介绍
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
Django中也可以使用PyMySQL连接MySQL数据库。
PyMySQL安装
pip install pymysql
连接数据库
注意事项
在进行本文以下内容之前需要注意:
- 你有一个MySQL数据库,并且已经启动。
- 你有可以连接该数据库的用户名和密码
- 你有一个有权限操作的database
基本使用# 导入pymysql模块
import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址 localhost等”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 定义要执行的SQL语句 sql = "select * from ren where name='alex'" CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 执行SQL语句 cursor.execute(sql) # 关闭光标对象 cursor.close() # 关闭数据库连接 conn.close()
登录代码
有问题的代码
import pymysql name=input('name:') psw=input('psw:') conn=pymysql.connect(host= "localhost",database="db2",user="root",password="123456",charset='utf8') cursor=conn.cursor() # sql='select * from s8 WHERE name="%s" and psw="%s";'%(name,psw) # 一定要认真 sql = "select * from s8 WHERE name='%s' and psw='%s';"%(name, psw) print(sql) ret=cursor.execute(sql)print(ret) # 这个返回的是行数,如果行数为1证明找到了对应的信息,否则为没有 cursor.close() conn.close() if ret==1:print('登录成功') else:print('登录失败') 注意 这种形式的有BUG 在name处输入 alex' -- hehe 不用输入密码就能直接登录
增删改查操作
增
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try:# 执行SQL语句 cursor.execute(sql, [username, age])# 提交事务 conn.commit() except Exception as e:# 有异常,回滚事务 conn.rollback() cursor.close() conn.close() 复制代码
获取插入数据的ID(关联操作时会用到)
导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try:# 执行SQL语句 cursor.execute(sql, [username, age])# 提交事务 conn.commit()# 提交之后,获取刚插入的数据的IDlast_id = cursor.lastrowid except Exception as e:# 有异常,回滚事务 conn.rollback() cursor.close() conn.close()
批量执行
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)] try:# 批量执行多条插入SQL语句 cursor.executemany(sql, data)# 提交事务 conn.commit() except Exception as e:# 有异常,回滚事务 conn.rollback() cursor.close() conn.close()
删
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() sql = "DELETE FROM USER1 WHERE id=%s;" try:cursor.execute(sql, [4])# 提交事务 conn.commit() except Exception as e:# 有异常,回滚事务 conn.rollback() cursor.close() conn.close()
改
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 修改数据的SQL语句 sql = "UPDATE USER1 SET age=%s WHERE name=%s;" username = "Alex" age = 80 try:# 执行SQL语句 cursor.execute(sql, [age, username]) 也可以写成小括号# 提交事务 conn.commit() except Exception as e:# 有异常,回滚事务 conn.rollback() cursor.close() conn.close()
查
查询单条数据
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 查询数据的SQL语句 sql = "SELECT id,name,age from USER1 WHERE id=1;" # 执行SQL语句 cursor.execute(sql) # 获取单条查询数据 ret = cursor.fetchone() cursor.close() conn.close() # 打印下查询结果 print(ret)
查询多条数据
# 导入pymysql模块 import pymysql # 连接database conn = pymysql.connect(host=“你的数据库地址”, user=“用户名”,password=“密码”,database=“数据库名”,charset=“utf8”) # 得到一个可以执行SQL语句的光标对象 cursor = conn.cursor() # 查询数据的SQL语句 sql = "SELECT id,name,age from USER1;" # 执行SQL语句 cursor.execute(sql) # 获取多条查询数据 ret = cursor.fetchall() cursor.close() conn.close() # 打印下查询结果 print(ret)
进阶用法
# 可以获取指定数量的数据 cursor.fetctmany(3) # 光标按绝对位置移动1 cursor.scroll(1, mode="absolute") # 光标按照相对位置(当前位置)移动1 cursor.scroll(1, mode="relative")
转载于:https://www.cnblogs.com/wangkun122/p/8259585.html
day 61 pymysql相关推荐
- python pymysql_python使用pymysql实现操作mysql
pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 适用环境 python版本 >=2.6或 ...
- Python之Pymysql模块操作MySQL增删改查
Python3 MySQL 数据库连接 - PyMySQL 驱动 PyMySQL 连接数据库,实现增删改查 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQ ...
- Python教程和PyMySQL数据库导航
介绍 按顺序显示记录可能会有些棘手,因为通常不会按字母顺序输入记录,并且如果ID编号未按1递增,使用记录ID来控制导航将不起作用.一个表中有10条记录(从1到10),已删除记录3.7和9,从而弄乱了顺 ...
- python使用pymysql包,操作mysql数据库,包括安装及使用(附代码)
(本文书写的初衷,大家想简单是使用数据库,而不想深入了解时,可以直接使用) 1.安装 # Ubuntu20以上版本适用# 安装python包pip install pymysql# 安装数据库sudo ...
- python pymysql连接池_杂项之pymysql连接池
杂项之pymysql连接池 本节内容 本文的诞生 连接池及单例模式 多线程提升 协程提升 后记 1.本文的诞生 由于前几天接触了pymysql,在测试数据过程中,使用普通的pymysql插入100W条 ...
- 关于MAC下pymysql连接mysql数据库报错2003的问题解决方法
关于MAC下pymysql连接mysql数据库报错2003的问题解决方法 问题:pymysql.err.OperationalError: (2003, "Can't connect to ...
- MySql - “Can‘t connect to MySQL server on ‘127.0.0.1‘ ([Errno 61] Connection refused)“
之前用 PyMySql 模组连结本地端的 MySQL 工作的挺顺利的,谁知道在 Mac 重开机后资料库连不上了,报错讯息如下: "Can't connect to MySQL server ...
- MySQL之pymysql模块
PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数 ...
- MySQL数据库(五)使用pymysql对数据库进行增删改查
折腾好半天的数据库连接,由于之前未安装 pip ,而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库,(如果有和我一样未安装 pip 的朋友请 点这里http://blog ...
最新文章
- Cloudify — REST Plugin
- mac 二进制安装mysql_如何在MAC中安装mysql二进制分发版
- linux 基准测试_如何对Linux系统进行基准测试:3个开源基准测试工具
- 08 comet反向ajax
- xss跨站脚本攻击_常见攻击之xss跨站脚本攻击
- Magento 获取当前货币和货币符How to get current currency in Magento
- 通俗易懂的5G 入门科普!
- 【蓝桥杯单片机】矩阵键盘和独立键盘新解(更稳定更高复用性)
- python初学 数据分叉情况下的函数递归
- div不占位置_Python爬取校花网,妈妈再也不会担心我不给她发女朋友照片了
- 【codevs1231】最优布线问题
- 25. 单体内置对象
- 数据库系统概论第五版(王珊)-基础篇(三)
- 三极管何时工作在饱和状态
- flink watermark 生成机制与总结
- 深入理解Java内存模型的volatile语义
- 微信企业号开发源码Java编写,懒人开发一键式部署项目,WeChatEnterprise框架你值得拥有
- 厦门大学计算机近3年分数线,从近3年数据分析厦门大学在职研究生2018年录取分数线趋势...
- 求1+2!+3!+...+N!的和
- java 手电筒 电池_android 手电筒的实现