pymysql 操作mysql和数据库同步

嘻嘻,我又来写博客了~作为一名菜鸟,我非常喜欢写博客,记录下自己的成长,然后也是一些总结

  • 本次学习要点
    • sql语句练习-procedure对数据进行更新
    • pycharm添加mysql数据源
    • pymysql调用过程
    • pymysql解决数据同步
    • 总结

本次学习要点

sql语句练习-procedure对数据进行更新。

create database laboratory;
use laboratory;
create table salary(
    id int,
    name varchar(50),
    salary decimal(8,2),
    primary key (id)
    );
describe salary;
-- 学习一下更改这个表里面column属性的一些信息 反引号!很重要!stackoverflow上讲的!很重要!
alter table salary
    change  `name` `name` varchar(50)not null,
    change  `salary` `salary` decimal(8,2)not null;
-- 再次查看表名的属性等
describe salary;

insert into salary values(1,'zhangsan',5500);
insert into salary values(2,'lisi',5000);
insert into salary values(3,'wangwu',7000);

-- 构建更新过程
-- 给工资低于a的人涨x%
delimiter \\
create procedure add_salary(
    in a decimal(8,2),
    in b int
)comment 'add salary,optionnally below a'
begin
    update salary
        set salary = salary*(1+b/100)
        where salary < a;
end\\

delimiter ;
-- 调用过程
call add_salary(6000,5);
select * 
from salary;

因为自己写纯种sql语句的次数很少,很陌生于是我就从一开始建表,到修改表,然后建立存储过程,到调用,再次过一遍,多练几次就熟悉了嘛~OK,原生态sql语句,写好了,然后也调用成功了,得到了结果:如下


pycharm添加mysql数据源

在pycharm里面写数据的时候,总是出现报错,说数据没绑定,可能搜不到,然后我就在pycharm里面绑定了数据源

  • 右上角搜索,database
  • 然后添加自己的mysql,用户,密码等信息
  • 记得在下面把驱动装一下,下面会提示,你没有那个驱动,然后就可以点test connection 测试了

然后发现,pycharm的这个数据源功能真滴强大,并且检索数据不会卡。我之前在VS上用的sql server的时候卡的我。。。还可以在上面各种操作,写sql语句等。蛮好用的
pymysql 操作mysql和数据库同步_第1张图片

pymysql调用过程

然后兴高采烈地去pycharm上一展身手

import pymysql

conn = pymysql.connect(
    host='localhost',
    user='root',
    password='lyy1314520',
    db='laboratory'
)
cur = conn.cursor()
cur.callproc('add_salary', (6000, 5))
sq1 = '''
    select *
    from salary
'''
cur.execute(sq1)
result = cur.fetchall()
for i in result:
    print(i)
cur.close()
conn.close()

来看看结果:(因为我已经在mysql里面执行过一次,所以这是在其基础上又执行了一次)

(1, ‘zhangsan’, Decimal(‘6063.75’))
(2, ‘lisi’, Decimal(‘5512.50’))

哈哈哈~当时满脸笑嘻嘻,谁知mmp,原始数据库没改!没改啊!没同步啊?这和我之前在别的地方玩的时候不一样啊!
这里写图片描述

pymysql解决数据同步

通过在网上查找, 问题与MySQL的存储引擎对事务的支持有关。 MySQL中有多种类型的存储引擎, 例如: MyISAM, InnoDB等。 MyISAM不支持事务处理, 而InnoDB是事务型数据库, 支持事务。 我的MySQL的默认存储引擎就是InnoDB, 所以对数据库数据的操作会在事先分配的缓存中进行, 只有在commit之后, 数据库的数据才会改变。这和mysql里面的设置有关系,然后我就乖乖在最后面加了一句

conn.commit( )

问题解决~

总结

今天的话也没干啥,大概就是解决了几个小问题,然后试了下remarkdown,写了几遍过程,解决了2014 错误码,还有pymysql,事务提交。其实一开始写的时候很生疏。。多写几遍就熟练了,所以动手写很重要!看一遍真的会了吗?答案是tan90,骗自己。路漫漫其修远兮~加油啊~啦啦啦。贼喜欢写博客了。。给自己增加点观众,感觉挺好的。也是个很好的总结过程。都是自己一个字一个字写的,所以收获很大的!!

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