PyMySQL是一个Python编写的MySQL驱动程序,让我们可以用Python语言操作MySQL数据库。

首先,使用pip安装PyMySQL。

pip install PyMySQL

使用PyMySQL

简单使用

如果有JDBC等其他语言的数据库学习经验的话,使用PyMySQL非常简单。下面是一个完整的MySQL增删查(没有改)的例子。

import pymysql

import datetime

host = 'localhost'

username = 'root'

password = '12345678'

db_name = 'test'

create_table_sql = """\

CREATE TABLE fuck(

id INT AUTO_INCREMENT PRIMARY KEY,

username VARCHAR(255) UNIQUE ,

nickname VARCHAR(255) NOT NULL ,

birthday DATE

)

"""

insert_table_sql = """\

INSERT INTO fuck(username,nickname,birthday)

VALUES('{username}','{nickname}','{birthday}')

"""

query_table_sql = """\

SELECT id,username,nickname,birthday

FROM fuck

"""

delete_table_sql = """\

DELETE FROM fuck

"""

drop_table_sql = """\

DROP TABLE fuck

"""

connection = pymysql.connect(host=host,

user=username,

password=password,

charset='utf8mb4',

db=db_name)

try:

with connection.cursor() as cursor:

print('--------------新建表--------------')

cursor.execute(create_table_sql)

connection.commit()

print('--------------插入数据--------------')

cursor.execute(

insert_table_sql.format(username='yitian', nickname='易天', birthday=datetime.date.today()))

cursor.execute(

insert_table_sql.format(username='zhang3', nickname='张三', birthday=datetime.date.today()))

cursor.execute(

insert_table_sql.format(username='li4', nickname='李四', birthday=datetime.date.today()))

cursor.execute(

insert_table_sql.format(username='wang5', nickname='王五', birthday=datetime.date.today()))

connection.commit()

print('--------------查询数据--------------')

cursor.execute(query_table_sql)

results = cursor.fetchall()

print(f'id\tname\tnickname\tbirthday')

for row in results:

print(row[0], row[1], row[2], row[3], sep='\t')

print('--------------清除数据--------------')

cursor.execute(delete_table_sql)

connection.commit()

print('--------------删除表--------------')

cursor.execute(drop_table_sql)

connection.commit()

finally:

connection.close()

如果需要更详细的资料,请查阅pymysql文档或者其他资料。

防止SQL注入

在上面的例子中直接拼接字符串,这不是好办法,因为可能存在SQL注入攻击,更好的解决办法是使用类库提供的函数来传参。所以上面的代码也需要稍作修改。

首先,将带参数的SQL语句改写。

insert_table_sql = """\

INSERT INTO fuck(username,nickname,birthday)

VALUES(%s,%s,%s)

"""

然后将相应的执行代码也进行修改,execute函数接受一个元组作为SQL参数。所以代码改写为这样。

print('--------------插入数据--------------')

cursor.execute(insert_table_sql, ('yitian', '易天', datetime.date.today()))

cursor.execute(insert_table_sql, ('zhang3', '张三', datetime.date.today()))

cursor.execute(insert_table_sql, ('li4', '李四', datetime.date.today()))

cursor.execute(insert_table_sql, ('wang5', '王五', datetime.date.today()))

connection.commit()

这样,SQL操作就更安全了。如果需要更详细的文档参考PyMySQL文档吧。不过好像这些SQL数据库的实现还不太一样,PyMySQL的参数占位符使用%s这样的C格式化符,而Python自带的sqlite3模块的占位符好像是?。因此在使用其他数据库的时候还是仔细阅读文档吧。

python propresql mysql_Python中操作mysql的pymysql模块详解相关推荐

  1. python中的pymysql_(转)Python中操作mysql的pymysql模块详解

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

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

    前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11. ...

  3. python的mysql模块_Python中操作mysql的pymysql模块详解

    前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文测试python版本:2.7.11. ...

  4. python propresql mysql_python数据库操作mysql:pymysql、sqlalchemy常见用法详解

    本文实例讲述了python数据库操作mysql:pymysql.sqlalchemy常见用法.分享给大家供大家参考,具体如下: 相关内容: 使用pymysql直接操作mysql 创建表 查看表 修改表 ...

  5. python soup.find_BeautifulSoup中find和find_all的使用详解

    爬虫利器BeautifulSoup中find和find_all的使用方法 二话不说,先上段HTML例子 index first item second item third item fourth i ...

  6. cmd mysql_CMD命令操作MySql数据库的方法详解

    第一:mysql服务的启动和停止 net stop mysql net start mysql 第二:登陆 mysql –u用户名 [–h主机名或者IP地址] –p密码 说明:用户名是你登录的用户,主 ...

  7. python对Excel的操作 xlrd、xlwt包详解

    文章更新中............. python中对Excel表格的操作,主要用到两个包,分别是xlrd和xlwt 1.xlrd主要用于读Excel表 2.xlwt则主要用于写Excel pytho ...

  8. python外部库是什么_Python 常用外部模块详解

    RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统,他遵循Mozilla Public License开源协议,MQ全称为Message Queue,消息队列(MQ) ...

  9. mysql主从同步linux,linux中部署mysql主从同步示例详解(绝对经典,看了必会)

    准备两台服务器并安装MySQL5.7 master服务器 192.168.254.132 slave服务器 192.168.254.136 确保两台服务器安装的mysql版本一致,本测试使用的是mys ...

最新文章

  1. 按计算机的地位划分计算机网络可分为,2010年全国自考计算机网络基本原理模拟试卷(三)及答案...
  2. java集合类——Stack栈类与Queue队列
  3. Javascript中的0,false,null,undefined,空字符串对比
  4. 怎样查看cudnn版本_ubuntu16.04+Geforce GTX1060安装CUDA和cuDNN
  5. 组策略中分类别禁用设备驱动程序安装,可以用来禁用USB设备
  6. 余弦函数导数推导过程_对三角函数深入理解以及换元法的应用
  7. org.eclipse.e4.core.di.InjectionException:org.eclipse.swt.SWTException: Widget is disposed
  8. C#笔记12 自定义集合和常用集合
  9. hibernate理解
  10. C语言实现学生信息管理系统
  11. 超炫酷生日快乐网页源代码_最炫表白网站源码_html生日快乐网站制作
  12. 2022腾讯云学生服务器申请流程(全攻略)
  13. 微信小程序 微信小程序框架API
  14. 【禁止套娃】用PPSSPP模拟PSP模拟Neogeo模拟SNK拳皇97
  15. android连接php还是asp,ASP或PHP如何判断是从电脑还是手机客户端访问页面的思路...
  16. 想了解视频加水印软件哪个好?这2个实用的软件分享给你
  17. linux pcs 所有命令,BaiduPCS-Go Windows或linux下百度网盘cmd命令行详细使用方法
  18. jasypt数据源加密
  19. 小程的第一节C语言课
  20. 浙师大oj1435最小公倍数

热门文章

  1. JavaScript函数节流和函数防抖
  2. vue滚动条滚到到底部触发的方法
  3. c语言中主函数创建链表,主函数怎么调用函数(数据结构,创建链表)
  4. ubuntu 12.04 php mysql_Ubuntu 12.04下LAMP安装配置
  5. oracle不一致性关闭下次,Oracle DataGuard
  6. 的训练过程_最全深度学习训练过程可视化工具(附github源码)
  7. 继电器触点粘连分析_真空充气包装机的继电器触点有哪几种类型?
  8. python制作中秋贺卡_中秋节到了,送你一个Python做的Crossin牌“月饼”
  9. js java自动部署_vue 自动化部署 jenkins 篇
  10. 三阶魔方还原步骤图_研究人员开发的AI成功在1.2秒内还原三阶魔方