Python学习笔记(20)pymysql模块

摘要:
结果集是一个对象fetchall():接收全部的返回结果行.fetchmany():接收多条返回结果行.3、使用cursor.execute,使用execute执行sql语句2.2、来,使用fetchone()方法获取单条数据.data=cursor.fetchone()print#关闭数据库连接,释放资源!!!

一、pymysql模块

pymysql模块是python中连接数据库的一个常用第三方库

2.1 pymysql.connect() 通过该方法连接数据库

import pymysql
# 打开数据库连接
db = pymysql.connect(host="XX.XXX.XXX.XXX",user='testuser',passwd:'test123',"TESTDB",charset='UTF8',autocommit=True)

Python学习笔记(20)pymysql模块第1张

参数:

localhost:需要填写你的MYSQL服务器地址 例如,host="http://XX.XXX.XXX.XXX",加端口号port=XXXX

testuser:是你的用户名 user='testuser',即连接数据库TESTDB使用的用户名为 "testuser"

passwd:是你的用户密码 passwd:test123

TESTDB:连接的数据库为 TESTDB

charset:charset='UTF8'为UTF8编码

autocommit:当修改数据时,自动提交数据

2、connection连接支持的方法

Python学习笔记(20)pymysql模块第2张

Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取所有数据,使用fetchmany获取多条数据

注意:使用该方法时,注意和游标的位置有关,当游标处于末尾时,就无法获取数据

  • fetchone():该方法获取下一个查询结果集。结果集是一个对象
  • fetchall():接收全部的返回结果行.
  • fetchmany():接收多条返回结果行.

3、使用cursor.execute("SELECT * from students"),使用execute执行sql语句


2.2、来,使用 fetchone() 方法获取单条数据.

data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接,释放资源!!!
db.close()
Python学习笔记(20)pymysql模块第3张

2.3、来,创建数据库表

# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
 
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
 
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""
 
cursor.execute(sql)
 
# 关闭数据库连接
db.close()

2.4、来,数据库插入操作

import pymysql
 
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
try:
   # 执行sql语句
   cursor.execute(sql)
   # 提交到数据库执行
   db.commit()
except:
   # 如果发生错误则回滚
   db.rollback()
 
# 关闭数据库连接
db.close()

db.commit() 命令很重要,执行此方法,方可提交到数据库执行更新!

2.5、来,数据库查询操作

查询EMPLOYEE表中salary(工资)字段大于1000的所有数据:

import pymysql
 
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE 
       WHERE INCOME > %s" % (1000)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 获取所有记录列表
   results = cursor.fetchall()
   for row in results:
      fname = row[0]
      lname = row[1]
      age = row[2]
      sex = row[3]
      income = row[4]
       # 打印结果
      print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % 
             (fname, lname, age, sex, income ))
except:
   print ("Error: unable to fetch data")
 
# 关闭数据库连接
db.close()

实例:

import pymysql
connect = pymysql.connect(host='127.0.0.1', user='user', password="123456",
                          db='user', port=3306,charset='utf8',autocommit=True)#建立数据库链接,autocommit每次修改后自动提交
cur = connect.cursor(pymysql.cursors.DictCursor)#建立游标,并申明字典类型
sql = 'select * from students'
cur.execute(sql)#执行sql语句
# connect.commit()#在修改数据库时,需要提交数据
# connect.rollback()#遇到事务失败时,需要回滚数据
print(cur.fetchone())#返回字典类型的单条数据
print(cur.fetchmany(2))#返回一个由2条字典构成的列表
print(cur.fetchall())#获取所有结果,默认以元组方式返回,可通过转换为字典以列表返回
cur.close()
connect.close()
print(cur.description)#返回游标的描述信息
二、python中sql的参数化写法
1、使用%符号占位写法

#查询语句
sql = "select * from GOODS_TYL where NAME='%s';"%name

#更新语句
sql = "update GOODS_TYL set price = %f,count = %d,color = '%s' where name = '%s';"%(price,count,color,name)

#插入语句
sql = "insert into GOODS_TYL (name,price,count,color) VALUES('%s',%f,%d,'%s');"%(name,price,count,color)

#删除语句
sql = "delete from GOODS_TYL where name = '%s';"% name

免责声明:文章转载自《Python学习笔记(20)pymysql模块》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenCV-Python:轮廓HDUOJ -----Color the ball下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python与redis交互

前言 首先我使用电脑为:Macbook air,电脑操作系统版本为10.13.6,处理器1.8GHz Intel Core i5, 安装python 版本号:python3.6.5 ,ide: pycharm 前置,已经安装homebrew,安装homebrew流程参考 https://blog.csdn.net/ziyuzhiye/article/det...

用python实现批量替换.doc文件文件内容

整个功能实现最重要的模块是docx这个模块 安装语句 pip install python-docx docx模块只能操作.docx文件,所以在这之前我们要将.doc文件转换成.docx。.doc文件是不能直接转换成.docx文件的,如果直接改后缀名会引起文件打不开或者乱码问题。 所以我们需要将文件另存为.docx格式。 import sys import...

sql server维护解决方案(备份、检查完整性、索引碎片整理)

请务必看原文原文:https://ola.hallengren.com/frequently-asked-questions.html经常问的问题入门 如何开始使用SQL Server维护解决方案? SQL Server维护解决方案入门很容易。跟着这些步骤。 下载MaintenanceSolution.sql。 在脚本中,找到以下行:SET @Ba...

VSCode 中Python代码自动补全与智能提示【转】

使用IDE编程,为了就是它的方便性、快捷性。而如何在VSCode中设置python环境的自动补全与智能提示呢?主要有下面两种方式: 使用微软插件 Visual Studio IntelliCode下载 Visual Studio IntelliCode 插件在VSCode 的 Extensions 中搜索 IntelliCode,选择 Visual Stu...

SQL 从查询结果里查询

有orders表: 我想要从从表中查出每天电动车和手机各自的销售总额。这个需求还是蛮简单的,仅仅须要依据createtime和product group by即可了。以下是我写的SQL语句: SELECT DATE_FORMAT( createtime, "%Y-%m-%d" ) cr, product, SUM(price) total FROM o...

python使用jieba实现中文文档分词和去停用词

分词工具的选择:现在对于中文分词,分词工具有很多种,比如说:jieba分词、thulac、SnowNLP等。在这篇文档中,笔者使用的jieba分词,并且基于python3环境,选择jieba分词的理由是其比较简单易学,容易上手,并且分词效果还很不错。 分词前的准备: 待分词的中文文档 存放分词之后的结果文档 中文停用词文档(用于去停用词,在网上可以找到很多...