mysql-API
事务
mysql事务:操作序列,这个操作要么执行,要么都不执行(工作单位)
支票表:支票账户 减少10000
储蓄表:储蓄账户 增加10000
特性:事务的4个属性 ACID
1.原子性Atomicity:一个事务是不可分割的最小的工作单位,整个事务要么全部提交成功,要么全部失败回滚
2.一致性Consistency:事务的开始和结束,数据库的完整性没有被破坏
3.隔离性Isolation:一个事务修改在最终提交以前,对其他事务是不可见的
4.持久性Durability:一旦事务提交,所做的修改永久保存到数据库当中。
开始事务:begin; # python 操作数据库默认是开始事物的。
执行操作:插入/修改数据(或删除数据)操作; 只要对数据库更改就需要执行事务
提交事务: commit 持久保存
回滚: rollback 都不执行
mysql配置文件, 如果是非本地主机连接mysql,就需要如下配置
# 1.跳转到/etc路径下的mysql路径下的配置文件夹下
cd /etc/mysql/mysql.conf.d
sudo vim mysqld.cnf
# 修改地址为 0.0.0.0 代表任何主机都可以连接
bind-address = 0.0.0.0
# 重启mysql
sudo service mysql restart
# 有的需要如下
sudo /etc/init.d/mysql restart
# 检查虚拟机端口转发
连接数据库api
import pymysql
# 连接方式一:
db_config = {
'host': '127.0.0.1', # 主机 即ip
'port': 3306, # 默认端口3306
'user': 'admin', # 用户
'password': 'Root110qwe',
'db': 'spiders', # 指定已有的数据库
'charset': 'utf8' # 设置字符集:注意这里是utf8
}
# 1.连接数据库(推荐使用)
db = pymysql.connect(**db_config)
# 方式二:以关键字参数连接; # 如mysql在windows本地host传入localhost
conn = pymysql.connect(host='localhost', port=3306, user='root', password='qwe123', db='mydb', charset='utf8')
# 2.获取操作游标
cur = db.cursor()
# 3.执行sql语句,调用execute()方法
sql = 'select * from student' # 查询
# sql = 'create database spiders [default character set utf8]' # [指定编码,我在连接时已经指定]
# sql1 = 'desc user' 表结构
result = cur.execute(sql) # result会返回查询到的数量
cur.execute(sql1)
# 3.1 获取结果
cur.fetchone() # 每次只获取一条数据【类似生成器的next;因此可以for遍历】
for i in range(result<