Python操作mysql

pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

一、数据库连接及创表

#encoding: utf-8
import pymysql
# 配置基本信息
db = pymysql.connect(
    host = '127.0.0.1',
    user = 'root',
    password = '123456',
    database = 'pymysql',
    port = 3306,
    # 有汉字的时候必须写这个
    charset='utf8'
)
# 建立连接
# 获得python执行Mysql命令的方法,也就是所说的操作游标
cursor = db.cursor()
# 用于测试
cursor.execute('select 1')
result = cursor.fetchone()
print(result)

建立数据表

# -*- coding = utf-8 -*-
# @Time : 2020/9/27 14:34
# @Author : md

import pymysql
# 配置基本信息
db = pymysql.connect(
    host = '127.0.0.1',
    user = 'root',
    password = '123456',
    database = 'pymysql',
    port = 3306,
    # 有汉字的时候必须写这个
    charset='utf8'
)
# 建立连接
# 获得python执行Mysql命令的方法,也就是所说的操作游标
cursor = db.cursor()

sql = '''
    create table student(
        id int NOT NULL AUTO_INCREMENT,
        user_id int(11) NOT NULL,
        name varchar(255) NOT NULL,
        address varchar(255) NOT NULL,
        PRIMARY KEY(id)
    )
'''
cursor.execute(sql)
cursor.close()
db.close()
print("创建成功")

二、插入数据

#encoding: utf-8
import pymysql
# 配置基本信息
db = pymysql.connect(
    host = '127.0.0.1',
    user = 'root',
    password = '123456',
    database = 'pymysql_test',
    port = 3306,
    charset='utf8'
)
# 建立连接
cursor = db.cursor()
sql = "insert user(username,age,password)values('cc',20,'654321')"
# 执行sql语句
cursor.execute(sql)
# 关闭插入的sql语句
db.commit()
# 关闭连接
db.close()

如果是数据不能确定的情况下,可以使用下面这种方式

cursor = db.cursor()
# 即使这个字段是整型,这个时候也的用%s,
sql = "insert user(username,age,password) values(%s,%s,%s)"
# 在执行sql语句的时候传入数据,传入的是元组
cursor.execute(sql,('dd',21,'111111'))
db.commit()
db.close()

批量插入多条数据

sql="insert into user values(%s,%s,%s)"
insert=cur.executemany(sql,[(4,'wen',20),(5,'tom',10),(6,'test',30)])
print ('批量插入返回受影响的行数:',insert)

三、查询数据

使用execute()函数得到的只是受影响的行数,并不能真正拿到查询的内容。cursor对象还提供了3种提取数据的方法:fetchone、fetchmany、fetchall.。每个方法都会导致游标动,所以必须注意游标的位置。

cursor.fetchone():获取游标所在处的一行数据,返回元组,没有返回None

cursor.fetchmany(size):接受size行返回结果行。如果size大于返回的结果行的数量,则会返回cursor.arraysize条数据。

cursor. fetchall():接收全部的返回结果行

  1. fetchone():这个方法每次获取一条数据
cursor = db.cursor()

sql = 'select * from user'
cursor.execute(sql)
result = cursor.fetchone()
print(result)
# 这个切记
db.close()
  1. fetchall():这个方法接收全部的返回结果
cursor = db.cursor()
sql = 'select * from user'
cursor.execute(sql)

results = cursor.fetchall()
for result in results:
    print(result)
db.close()
  1. fetchmany(size):可以获取指定条数的数据
cursor = db.cursor()
sql = 'select * from user'
cursor.execute(sql)

results = cursor.fetchmany(3)
for result in results:
    print(result)
db.close()

四、删除数据

cursor = db.cursor()
sql = 'delete from user where id=1'
cursor.execute(sql)
# 关闭sql语句
db.commit()
db.close()

五、更新数据

cursor = db.cursor()
sql = 'update user set username="未来" where id=4'
cursor.execute(sql)
# 关闭sql语句
db.commit()
db.close()

注意:增,删,改的时候必须得执行db.commit()

六、事务

事务机制可以确保数据一致性。

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性

# SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 向数据库提交
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()
posted @ 2020-09-27 15:54  山丘i  阅读(176)  评论(0编辑  收藏  举报