第一种方法,使用 pymysql库

  1. import pymysql.cursors
  2.  
  3. # Connect to the database
  4. connection = pymysql.connect(host='localhost',
  5. user='root',
  6. password='root',
  7. db='spider',
  8. charset='utf8mb4',
  9. cursorclass=pymysql.cursors.DictCursor)
  10.  
  11. try:
  12. with connection.cursor() as cursor:
  13. # Create a new record
  14. sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
  15. cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
  16.  
  17. # connection is not autocommit by default. So you must commit to save
  18. # your changes.
  19. connection.commit()
  20.  
  21. with connection.cursor() as cursor:
  22. # Read a single record
  23. sql = "SELECT `id`, `password` FROM `users` WHERE `email`=%s"
  24. cursor.execute(sql, ('webmaster@python.org',))
  25. result = cursor.fetchone()
  26. print(result)
  27. with connection.cursor() as cursor:
  28. sql = "SELECT COUNT(*) as count FROM `users`"
  29. cursor.execute(sql)
  30. result = cursor.fetchone()
  31. print(result)
  32. finally:
  33. connection.close()

此方法基于sql语句,较复杂

第二种,使用peewee库,其实peewee是基于pymysql库的一个ORM框架,将表封装成了类,将记录封装成了对象。学习成本较高

  1. from peewee import *
  2. from datetime import date
  3. db = MySQLDatabase("spider",host="127.0.0.1",port=3306,user="root",password="root")
  4. class Person(Model):
  5. name = CharField(max_length=20,null=True) # 最大长度20,可以为null
  6. birthday = DateField()
  7. class Meta:
  8. database = db
  9. table_name = "users"
  10.  
  11. if __name__ == "__main__":
  12. # 如果没表会创建表
  13. db.create_tables([Person])
  14.  
  15. # 新增数据
  16. uncle_bob = Person(name='Bob',birthday=date(1960,1,5))
  17. print(uncle_bob.save())
  18. # 查询数据
  19. # 一条(get方法在取不到数据会抛出异常)
  20. try:
  21. per = Person.get(Person.name == 'Bob')
  22. except:
  23. print('娶不到')
  24. else:
  25. print(per.name)
  26. # 多条
  27. # query是modelselect对象,可以当作list来操作 因为它实现了__getitem魔法方法
  28. query = Person.select().where(Person.name == 'Bob')
  29. print(query)
  30. for person in query:
  31. person.birthday = date(2020,2,2)
  32. # 修改数据
  33. person.save() #在没有数据存在的时候新增数据,存在的时候修改数据
  34. # 删除数据
  35. person.delete_instance()
  36. print('多条:',person.name)

python&mysql的更多相关文章

  1. Python—>Mysql—>Dbvisualizer

    MySQLdb: https://pypi.python.org/pypi/MySQL-python/1.2.4 import MySQLdb 1.Download Connector/Python: ...

  2. Python Mysql 篇

    Python 操作 Mysql 模块的安装 linux: yum install MySQL-python window: http://files.cnblogs.com/files/wupeiqi ...

  3. Python MySQL ORM QuickORM hacking

    # coding: utf-8 # # Python MySQL ORM QuickORM hacking # 说明: # 以前仅仅是知道有ORM的存在,但是对ORM这个东西内部工作原理不是很清楚, ...

  4. python 之路,Day11(上) - python mysql and ORM

    python 之路,Day11 - python mysql and ORM   本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 ...

  5. 树莓派安装ubuntu-server,配置镜像,安装python/mysql/samba记录

    目标: 1/在raspberrypi 3B上安装ubuntu-server 2/配置好python/mysql/samba等服务,实现爬虫稳定运行我的硬件准备: 1/raspberrypi 3B 2/ ...

  6. Python/ MySQL练习题(一)

    Python/ MySQL练习题(一) 查询“生物”课程比“物理”课程成绩高的所有学生的学号 SELECT * FROM ( SELECT * FROM course LEFT JOIN score ...

  7. python/MySQL练习题(二)

    python/MySQL练习题(二) 查询各科成绩前三名的记录:(不考虑成绩并列情况) select score.sid,score.course_id,score.num,T.first_num,T ...

  8. Python/MySQL(一、基础)

    Python/MySQL(一.基础) mysql: MYSQL : 是用于管理文件的一个软件 -socket服务端 (先启动) -本地文件操作 -解析 指令[SQL语句] -客户端软件 (各种各样的客 ...

  9. Python/MySQL(二、表操作以及连接)

    Python/MySQL(二.表操作以及连接) mysql表操作: 主键:一个表只能有一个主键.主键可以由多列组成. 外键 :可以进行联合外键,操作. mysql> create table y ...

  10. Python/MySQL(三、pymysql使用)

    Python/MySQL(三.pymysql使用) 所谓pymysql就是通过pycharm导入pymysql模块进行远程连接mysql服务端进行数据管理操作. 一.在pycharm中导入pymysq ...

随机推荐

  1. FastDFS 配置文件 tracker.conf

    FastDFS 版本5.05 配置文件分为三部分   控制器:tracker.conf存储器:storage.conf 客户端:client.conf 文件位置:/etc/fdfs 基本配置(基础配置 ...

  2. php 安装扩展插件实例-gd库

    今天给php 安装一个扩展插件 gd库   一.gd库是什么 gd库是一个开源的图像处理库,它通过提供一系列用来处理图片的API,使其可以用来创建图表.图形.缩略图以及其他图像的处理操作. gd库支持 ...

  3. Day1前端学习之路——概述

    终于下定决心要好好学习前端知识了,以后会把学习过程中的一些随笔记录在这里.HTML.CSS.JavaScript这三大前端语言在大三的时候就有所接触,但是学习的不够深入,这一次希望能够坚持下去. 学习 ...

  4. mybatis缓存,包含一级缓存与二级缓存,包括ehcache二级缓存

    一,引言 首先我们要明白一点,缓存所做的一切都是为了提高性能.明白了这一点下面我们开始进入正题. 二,mybatis缓存概要 ①.mybatis的缓存有两种,分别是一级缓存和二级缓存.两者都属于查询缓 ...

  5. JS从键盘输入当月利润,求应发放奖金总数

    题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%:利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%:20万到4 ...

  6. 【学习笔记】:JavaScript中的BOM对象

    JavaScript中的BOM对象 BOM(Browser Object Model):浏览器对象模型. BOM可用于对浏览器窗口进行访问,但BOM没有相关的标准,所以根据浏览器的不同,其中定义的对象 ...

  7. Android布局管理器-从实例入手学习相对布局管理器的使用

    场景 AndroidStudio跑起来第一个App时新手遇到的那些坑: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103797 ...

  8. Chrome的插件扩展程序安装目录

    地址栏输入chrome:version回车 个人资料路径下的Extensions文件夹即默认的扩展安装路径

  9. 【57】目标检测之Anchor Boxes

    Anchor Boxes 到目前为止,对象检测中存在的一个问题是每个格子只能检测出一个对象,如果你想让一个格子检测出多个对象,你可以这么做,就是使用anchor box这个概念. 我们还是先吃一颗栗子 ...

  10. 第10章 DOM

    第10章 DOM 10.1 节点层次 10.1.1 Node 类型 10.1.2 Document 类型 10.1.3 Element 类型 10.1.4 Text 类型 10.1.5 Comment ...