PyMySQL
一、数据库编程
PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,
Python2中则使用MySQLdb。
数据库编程就是针对数据库的操作,通过编写程序的方式,让程序做为数据库的客户端进行数据库操作。
对于MySQL的操作我们可以通过SQL语句,但是有很多情况下我们需要写入MySQL的数据非常多,并且是在其他平台获取数据的同时写入MySQL,需要边获取边写入,这种情况是不适合使用SQL语句的。
有些情况是我们需要读取MySQL中的数据,来给代码使用,这个时候我们需要将数据直接读到代码中,也不适合使用SQL语句。
Python提供了一个数据库编程的库pymysql,通过pymysql,我们可以通过代码来对数据库进行增、删、改、查操作,而不需要使用SQL语句,并且可以从其他平台获取数据的同时将数据写到数据库中,也可以读取数据后立即给代码使用。
本文就介绍pymysql对MySQL数据库的增、删、改、查操作方法。
二、准备事项
要针对数据库进行操作,我们需要先准备好数据库,数据表以及连接数据库的用户。
1、通过root用户登陆MySQL
mysql -u root -p
2、创建数据库pymysql_demo
create database pymysql_demo charset utf8;
3、使用数据库pymysql_demo
use pymysql_demo;
4、创建表test_table
create table test_table(
id int unsigned primary key auto_increment not null,
create_time timestamp not null default current_timestamp,
test_data longtext notnull
);
三、数据插入操作
在Python中操作数据库不管增删改查,都要经过5个步骤;
连接数据库——获取游标——数据库操作——关闭游标——关闭数据库连接;
【1】增加
from pymysql import connect
import pymysql
def insert_data():
"""在mysql中新增一条数据"""
#1)创建连接
conn = pymysql.connect(
host ="localhost",
port = 3306,
user ='root',
password = 'westos',
database = 'pymysql_demo',
charset ='utf8'
)
"""# 1. 与mysql建立连接 mysql -h host/ip -u root -p westos
conn = pymysql.connect(host='172.25.254.123(服务端ip)
user='root'
password='westos',
db='pymysql_demo')
"""
#2)创键游标
cursor =conn.cursor()
#3)执行语句
sql ='''insert into test_table values(0,now(),'Hello MySQL!');'''
try:
cursor.execute(sql)
conn.commit()
except Exception as e:
print(e)
#4)关闭游标
cursor.close()
#5)关闭连接
conn.close()
【2】查询
fetchone():该方法获取下一个查询结果集。结果集是一个对象
fetchall():接受全部的返回结果行
rowcount():这是一个只读属性,并返回执行execute()方法后影响的行数。
其中的fetchone()是获取查询集中的一条数据,返回结果是一个元组。还有fetchmany()和fetchall()两个方法,fetchmany()可以接收一个整数参数,返回整数条数据,结果是一个嵌套的元组。fetchall()返回查询到的所有数据,返回结果也是一个嵌套的元组。
def select_data():
"""从mysql中查询数据"""
conn = pymysql.connect(
host="localhost",
port=3306,
user='root',
password='westos',
database='pymysql_demo',
charset='utf8'
)
cursor = conn.cursor()
#row_one =None
sql ='''select * from test_table;'''
try:
cursor.execute(sql)
data = cursor.fetchone()
conn.commit()
print(data)
except Exception as e:
print(e)
cursor.close()
conn.close()
#print(row_one)
【3】创建一个新表
def create_sqltable():
conn =connect(
host ='localhost',
user ='root',
port = 3306,
password ='westos',
db = 'pymysql_demo',
charset ='utf8'
)
cursor =conn.cursor()
sql ='''create table student(id int,name varchar(20),age int, score float );'''
try:
cursor.execute(sql)
conn.commit()
except Exception as e:
print(e)
cursor.close()
conn.close()
【4】批量操作
def insert_datas():
"""在mysql中批量新增数据"""
#1)创建连接
conn = pymysql.connect(
host ="localhost",
port = 3306,
user ='root',
password = 'westos',
database = 'pymysql_demo',
charset ='utf8'
)
"""# 1. 与mysql建立连接 mysql -h host/ip -u root -p westos
conn = pymysql.connect(host='172.25.254.123(服务端ip)
user='root'
password='westos',
db='pymysql_demo')
"""
#2)创键游标
cursor =conn.cursor()
#3)执行语句
sql ='''insert into student(name, score) values("%s", "%s");'''
import random
for i in range(10):
name ="学生"+str(i+1)
score = random.randint(50,100)
sqls = sql % (name,score)
try:
cursor.execute(sqls)
conn.commit()
except Exception as e:
print(e)
#4)关闭游标
cursor.close()
#5)关闭连接
conn.close()