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():接收全部的返回结果行
- fetchone():这个方法每次获取一条数据
cursor = db.cursor()
sql = 'select * from user'
cursor.execute(sql)
result = cursor.fetchone()
print(result)
# 这个切记
db.close()
- fetchall():这个方法接收全部的返回结果
cursor = db.cursor()
sql = 'select * from user'
cursor.execute(sql)
results = cursor.fetchall()
for result in results:
print(result)
db.close()
- 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()