Python mysql操作

操作系统:MAC

python3下pymysql替代了以前的MySQLdb

首先创建一个数据库:

"""
创建一个database
"""
import pymysql

conn = pymysql.connect(host='localhost', user='root', passwd='123456')
cursor = conn.cursor()
#创建database
cursor.execute("create database fred_db")
#删除database
#cursor.execute("drop database fred_db")
conn.close()
创建一个database

上面代码创建了一个fred_db的数据库,然后创建数据表table,并插入一行数据:

"""
新建数据表,并插入一条数据
"""
import pymysql

conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='fred_db')
cursor = conn.cursor()
#创建数据表table
cursor.execute("create table user(id int, name varchar(20), password varchar(20))")

#插入一条数据
cursor.execute("insert into user values('1', 'Fred', '123456')")

#关闭游标
cursor.close()
#提交事务,在向数据库插入一条数据时必须有这个方法,否则数据不会被真正的插入
conn.commit()
conn.close()
新建数据表,并插入一条数据

还可以一次性插入多条数据:

"""
一次性插入多条记录
"""
import pymysql

conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='fred_db')
cursor = conn.cursor()
#创建数据表table
#cursor.execute("create table user(id int, name varchar(20), password varchar(20))")

#插入一条数据
#cursor.execute("insert into user values('1', 'Fred', '123456')")

#一次性插入多条记录
sqli = "insert into user values(%s, %s, %s)"

cursor.executemany(sqli, [
    ('2', 'Eric', '123'),
    ('3', 'Gaby', '123'),
    ('4', 'David', '123'),
])

#关闭游标
cursor.close()
#提交事务,在向数据库插入数据时必须有这个方法,否则数据不会被真正的插入
conn.commit()
conn.close()
一次性插入多条记录

同时还可以查询已经插入的数据:

"""
查询数据
"""
import pymysql

conn = pymysql.connect(host='localhost', user='root', passwd='123456', db='fred_db')
cursor = conn.cursor()

#显示table中有几条数据
numbers = cursor.execute("select * from user")
print(numbers)

#只能获取一条数据
#result = cursor.fetchone()
#print(result)

#打印表中的所有数据
info = cursor.fetchmany(numbers)
for item in info:
    print(item)

cursor.close()
conn.commit()
conn.close()
查询数据

执行事务

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

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

  • 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
  • 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。

commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。

补充:

connect函数的常用参数

user #用户名

password #用户密码

host #主机名

database #数据库名

connect函数会返回连接对象,连接对象方法

close() #关闭连接之后,连接对象和它的游标均不可用

commit() #如果支持的话就提交挂起的事务,否则不做任何事

rollback() #回滚挂起的事务(可能不可用)

cursor() #返回连接的游标对象

游标对象方法

close() #关闭游标

execute(oper[,params]) #执行SQL操作,可能使用参数

executemany(oper,pseq) #对序列中的每个参数执行SQL操作

fetchone() #把查询的结果集中的下一行保存为序列,或者+ None

fetchmany([size]) #获取查询结果集中的多行,默认为1

fetchall() #将所有(剩余)的行作为序列的序列

原文地址:https://www.cnblogs.com/fredkeke/p/6363399.html