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相关推荐

  1. python pymysql_python使用pymysql实现操作mysql

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 适用环境 python版本 >=2.6或 ...

  2. Python之Pymysql模块操作MySQL增删改查

    Python3 MySQL 数据库连接 - PyMySQL 驱动 PyMySQL 连接数据库,实现增删改查 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQ ...

  3. Python教程和PyMySQL数据库导航

    介绍 按顺序显示记录可能会有些棘手,因为通常不会按字母顺序输入记录,并且如果ID编号未按1递增,使用记录ID来控制导航将不起作用.一个表中有10条记录(从1到10),已删除记录3.7和9,从而弄乱了顺 ...

  4. python使用pymysql包,操作mysql数据库,包括安装及使用(附代码)

    (本文书写的初衷,大家想简单是使用数据库,而不想深入了解时,可以直接使用) 1.安装 # Ubuntu20以上版本适用# 安装python包pip install pymysql# 安装数据库sudo ...

  5. python pymysql连接池_杂项之pymysql连接池

    杂项之pymysql连接池 本节内容 本文的诞生 连接池及单例模式 多线程提升 协程提升 后记 1.本文的诞生 由于前几天接触了pymysql,在测试数据过程中,使用普通的pymysql插入100W条 ...

  6. 关于MAC下pymysql连接mysql数据库报错2003的问题解决方法

    关于MAC下pymysql连接mysql数据库报错2003的问题解决方法 问题:pymysql.err.OperationalError: (2003, "Can't connect to ...

  7. 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 ...

  8. MySQL之pymysql模块

    PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数 ...

  9. MySQL数据库(五)使用pymysql对数据库进行增删改查

    折腾好半天的数据库连接,由于之前未安装 pip ,而且自己用的python 版本为3.6. 只能用 pymysql 来连接数据库,(如果有和我一样未安装 pip 的朋友请 点这里http://blog ...

最新文章

  1. Cloudify — REST Plugin
  2. mac 二进制安装mysql_如何在MAC中安装mysql二进制分发版
  3. linux 基准测试_如何对Linux系统进行基准测试:3个开源基准测试工具
  4. 08 comet反向ajax
  5. xss跨站脚本攻击_常见攻击之xss跨站脚本攻击
  6. Magento 获取当前货币和货币符How to get current currency in Magento
  7. 通俗易懂的5G 入门科普!
  8. 【蓝桥杯单片机】矩阵键盘和独立键盘新解(更稳定更高复用性)
  9. python初学 数据分叉情况下的函数递归
  10. div不占位置_Python爬取校花网,妈妈再也不会担心我不给她发女朋友照片了
  11. 【codevs1231】最优布线问题
  12. 25. 单体内置对象
  13. 数据库系统概论第五版(王珊)-基础篇(三)
  14. 三极管何时工作在饱和状态
  15. flink watermark 生成机制与总结
  16. 深入理解Java内存模型的volatile语义
  17. 微信企业号开发源码Java编写,懒人开发一键式部署项目,WeChatEnterprise框架你值得拥有
  18. 厦门大学计算机近3年分数线,从近3年数据分析厦门大学在职研究生2018年录取分数线趋势...
  19. 求1+2!+3!+...+N!的和
  20. java 手电筒 电池_android 手电筒的实现

热门文章

  1. 金蝶osf接口开发_解决SaaS间的数据孤岛,实现SaaS数据接口集成互通互联
  2. php 说说,PHP程序员:你过来,给我说说 $this,self,static 有什么区别?
  3. R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)
  4. 购物商城Web开发第十四天
  5. 一起来学Masonry (一)
  6. Linux文件系统之inode与软硬连接
  7. Future 接口介绍
  8. Windows Server 2012 NIC Teaming
  9. C#程序员66个编码好习惯
  10. dboxShare企业文件共享网盘