一、创建数据库

import pymysql
conn = pymysql.connect(host='ip', user='root', password='密码')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = "create database db1 default charset utf8"
cursor.execute(sql)
cursor.close()
conn.close()

二、创建表

import pymysql
conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
sql = """
create table students(
id varchar(20),
name varchar(20),
age int
)engine=innodb default charset=utf8
"""
cursor.execute(sql)
cursor.close()
conn.close()

注意:创建表时,要设置主键

create table students(
id varchar(20) primary key,
name varchar(20),
age int
)engine=innodb default charset=utf8;

三、操作数据

1、插入数据

a、普通版

import pymysql
conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
num = ''
name = 'ajax'
age = 25
sql = "insert into students(id, name, age) values(%s, %s, %s)"
try:
cursor.execute(sql, (num, name, age))
# 插入数据,需要提交连接mysql对象
conn.commit()
except Exception as e:
print(e)
conn.rollback()
cursor.close()
conn.close()

注意:conn.commit(), 支持事务(innodb)

b、高级版(灵活版)

import pymysql
conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
data = {
'id': '',
'name': 'tom',
'age': 24
} table = 'students'
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data.values()))
# print(keys)
# print(values)
sql = "insert into {table}({keys}) values({values})".format(table=table, keys=keys, values=values)
# print(sql)
# print(tuple(data.values()))
try:
cursor.execute(sql, tuple(data.values()))
# 插入数据,需要提交连接mysql对象
print('数据添加成功')
conn.commit()
except Exception as e:
print(e)
conn.rollback()
cursor.close()
conn.close()

2、更新数据

a、普通版

import pymysql
conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
age = 100
id = '' sql = "update students set age=%s where id=%s" try:
cursor.execute(sql, (age, id))
print('修改数据成功')
conn.commit()
except Exception as e:
print(e)
conn.rollback()

b、高级版(灵活版)

作用:如果数据存在,则更新数据,如果数据不存在,则添加数据

import pymysql

conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
data = {
'id': '',
'name': 'tom',
'age': 26
} table = 'students'
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data.values()))
# print(keys)
# print(values)
sql = "insert into {table}({keys}) values({values}) on duplicate key update".format(table=table, keys=keys,
values=values)
# print(sql)
update = ', '.join([" {}= %s".format(key) for key in data])
# print(update)
sql = sql + update
# print(sql)
# insert into students(id, name, age) values(%s, %s, %s) on duplicate key update id= %s, name= %s, age= %s
# print(tuple(data.values()) * 2)
try:
cursor.execute(sql, tuple(data.values()) * 2)
# 插入数据,需要提交连接mysql对象
print('数据更新或添加成功')
conn.commit()
except Exception as e:
print(e)
conn.rollback()
cursor.close()
conn.close()

3、删除数据

import pymysql

conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) table = 'students'
condition = 'age > 30'
sql = "delete from {table} where {condition}".format(table=table, condition=condition)
# print(sql) try:
cursor.execute(sql)
print('删除数据成功')
conn.commit()
except Exception as e:
print(e)
conn.rollback()

4、查询数据

import pymysql

conn = pymysql.connect(host='ip', user='root', password='密码', db='db1')
# 以字典的形式返回操作结果
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) table = 'students'
condition = 'age > 10'
sql = "select * from {table} where {condition}".format(table=table, condition=condition)
# print(sql) try:
cursor.execute(sql)
results = cursor.fetchall()
print(results)
except Exception as e:
conn.rollback()

pymysql总结的更多相关文章

  1. pyMysql

    本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...

  2. Python 3.x 连接数据库(pymysql 方式)

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

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

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

  4. 杂项之pymysql连接池

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

  5. Python3中使用PyMySQL连接Mysql

    Python3中使用PyMySQL连接Mysql 在Python2中连接Mysql数据库用的是MySQLdb,在Python3中连接Mysql数据库用的是PyMySQL,因为MySQLdb不支持Pyt ...

  6. Python之路-python(mysql介绍和安装、pymysql、ORM sqlachemy)

    本节内容 1.数据库介绍 2.mysql管理 3.mysql数据类型 4.常用mysql命令 创建数据库 外键 增删改查表 5.事务 6.索引 7.python 操作mysql 8.ORM sqlac ...

  7. python pymysql和orm

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1. 安装 管理员打开cmd,切换到python的安装路径,进入到Scripts目录下(如:C:\Users\A ...

  8. python成长之路【第十三篇】:Python操作MySQL之pymysql

    对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...

  9. (转)pymysql 连接mysql数据库---不支持中文解决

    往数据库里插入中文时出现异常:UnicodeEncodeError: 'latin-1' codec can't encode characters 就是编码的问题,pymysql默认的编码是lati ...

  10. 循序渐进Python3(十)-- 1 -- pymysql

    使用pymsql 模块操作数据库 #!/usr/bin/env python , ),()]), user='root', passwd='123456', db='test')# 创建游标curso ...

随机推荐

  1. HDU 5912 Fraction(模拟)

    Problem Description Mr. Frog recently studied how to add two fractions up, and he came up with an ev ...

  2. linux进程简单睡眠

    当一个进程睡眠, 它这样做以期望某些条件在以后会成真. 如我们之前注意到的, 任何睡 眠的进程必须在它再次醒来时检查来确保它在等待的条件真正为真. Linux 内核中睡眠的 最简单方式是一个宏定义, ...

  3. linux 定时器 API

    内核提供给驱动许多函数来声明, 注册, 以及去除内核定时器. 下列的引用展示了基本的 代码块: #include <linux/timer.h> struct timer_list { / ...

  4. HDU6383p1m2(二分)

    补个题.. 传送门 点我 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  5. VisualStudio 2019 新特性

    很多小伙伴都好奇 VisualStudio 2019 有哪些功能,下面让我介绍一些好玩的特性 在安装完成之后会看到创新的欢迎界面,这个欢迎界面支持输入关键字搜项目,同时支持选择语言平台 很多小伙伴都说 ...

  6. Tomcat 类加载器打破双亲委派模型

    我们分为4个部分来探讨: 1. 什么是类加载机制? 2. 什么是双亲委任模型? 3. 如何破坏双亲委任模型? 4. Tomcat 的类加载器是怎么设计的? 我想,在研究tomcat 类加载之前,我们复 ...

  7. 第二阶段:2.商业需求文档MRD:4.MRD-核心目标-产品构成

    竞争对手分析很重要.之后单独讲解.产品经理时刻要关注竞争产品的状态. 1.不同于PRD.这里只是概况.2.产品前景的核心目标就是:KPI(用户使用量:安装量,卸载量,日活数)跟ROI(开发人力,时间, ...

  8. java基础 -- 关键字static的用法

    static关键字的基本作用就是方便在没有创建对象的情况下调用类的方法/变量, static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问. static ...

  9. 【题解】HDU Homework(倍增)

    [题解]HDU Homework(倍增) 矩阵题一定要多多检查一下是否行列反了... 一百个递推项一定要存101个 说多了都是泪啊 一下午就做了这一道题因为实在是太菜了太久没写这种矩阵的题目... 设 ...

  10. 1086 就不告诉你 (15分)C语言

    做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地微笑着告诉他:"五十三."本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积. 输入 ...