Python中MySQL的使用


一、 首先需要安装驱动程序


MySQL基于TCP协议之上开发,但网络连接后,传输的数据必须遵守MySQL协议。
封装好MySQL协议的包,即为驱动程序

pip install pysysql


二、 Python下mysql的三大客户端

1、mysqldb  对MySQL的C client封装实现,仅支持Python2,但不支持Python3
2、MySQL官方的连接驱动--->mysql-connector-python
3、pymysql(常使用的)
     语法兼容MySQLdb,使用python写的库,支持python3
     官方网址:https://pypi.org/project/PyMySQL/
      API: https://pymysql.readthedocs.io/en/latest/modules/index.html

三、 Python基于pymysql连接数据库操作的一般流程**

  • 建立连接
  • 获取游标
  • 执行SQL
  • 提交事务
  • 释放资源

四、 数据库的使用

1、创建链接

import pymysql
    
conn = pymysql.connect(  # conn为连接MySQL数据库类的一个实例
       host="localhost",
       database"fresh",
       port="3306",
       user="root",
       password=""
    )

   
    另外需要注意,数据库相关操作的返回结果以元组形式,若以kv方式返回,连接实例,定义
    

cursorclass=pymysql.cursors.DictCursor
    
print(conn)


 
     2、定义获取conn连接实例的游标对象
   

cur = conn.cursor()


 3、操作数据库需要基于execute方法
    
   

cur.execute("show databases;")
    for i in cur:
        print(i)
        
    cur.close()  # 关闭游标
    conn.close() # 断开连接


五、 DDL语句相关操作

   

import pymysql
    conn = pymysql.connect(
       host="localhost",
       user="root",
       password="")
    cur = conn.cursor()
    cur.execute("create database x01")
    conn.select_db("x01")
    cur.execute("create table stu (name varchar(255), class varchar(255))")
    cur.execute("desc stu")
    for i in cur:
        print(i)
   
    print("-------------")
    cur.execute("alter table stu add column id int auto_increment primary key")
    cur.execute("desc stu")
    for i in cur:
        print(i)
    cur.execute("show tables")
    for i in cur:
        print(i)
    print("-------------")
    cur.execute("create table class (id int auto_increment primary key, name varchar(255), url varchar(255))")
    cur.execute("show tables")
    for i in cur:
        print(i)
    
    cur.execute("drop database x01")
    
    cur.close()
    conn.close()

六 、数据的相关DML语句增删改操作(通过Python操作数据库的数据操作,以事务的机制执行,需要进行commit或rollback)

1、创建测试库和表:

   

create database x01;  #创建库
use x01  #使用库
create table t(id int,name varchar(20));  #创建表

2、测试表中插入数据:

   

import pymysql
conn = pymysql.connect(
       host="localhost",
       user="root",
       password="1234",
       db="x01")
cur = conn.cursor()
cur.execute("insert into t(id,name) values(1,'张三')")
cur.execute("insert into t(id,name) values(2,'李四'),(3,'王五'),(4,'赵六')")

#确定数据插入,事务提交

conn.commit()


3、也可以将数据封装为对象,进行赋值调用方式插入数据

   

import pymysql
conn = pymysql.connect(
       host="localhost",
       user="root",
       password="",
       db="x01")
cur = conn.cursor()
sql = "insert into t(id,name) values(%s,%s)"
val = (5, '钱七')
cur.execute(sql,val)
conn.commit()


#将数据封装为对象,进行赋值调用方式批量插入数据,使用 executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据:
import pymysql
conn = pymysql.connect(
       host="localhost",
       user="root",
       password="",
       db="x01")
cur = conn.cursor()
sql = "insert into t(id,name) values(%s,%s)"
val = [(101, 'aaa'), (102, 'bbb'), (103, 'ccc'), (104, 'ddd')]
cur.executemany(sql, val)
conn.commit()
print(cur.rowcount, "条记录插入成功。")

4、将插入数据的记录以rowcount对象进行统计,并打印出来

   

 print(cur.rowcount, "条记录插入成功")


5、事务特性

cur.execute("delete from t where id=1")

## 放弃删除数据
conn.rollback()

 

   

七、mysql的其他方法

1、lastrowid方法(获取最后一个插入数据的ID号)

2、查询操作

   

cur.execute('select * from t')
    for i in cur:
    print(i)

3、fetchall()  可以将查询的结果保存封装起来,方便日后调用此对象

   

cur.execute('select * from tb1')
result = cur.fetchall()
for i in result:
   print(i)

4、callproc(),调用存储过程

   

import pymysql
    
conn = pymysql.connect("localhost", "root", "", "x01")
cur = conn.cursor()
    
try:
    i = 100
    cur.callproc("proc1", (i,))
except Exception as e:
    conn.rollback() #回滚
    print(e)
else:
    conn.commit() #提交
cur.close() #关闭游标
conn.close() #断开连接

 


 

你可能感兴趣的:(数据库,mysql,python)