在Pycharm 2017 上连接Mysql数据库,并进行增删改查等操作

一、安装PyMysql
首先打开Pycharm 2017点击File–>Settings–> Project –> Project Interpreter 右边菜单栏–>双击 pip–>在搜索栏输入PyMysql,右侧查看PyMysql驱动的版本–>点击Install Package进行安装
这里写图片描述
这里写图片描述
有不放心的小伙伴可以pip freeze下检查是否装上了,也可以在cmd进行import PyMysql 看是否装上
二、当前是编写测试代码

# -*-coding:UTF-8-*-

import pymysql

try:
    #获取数据库连接
    conn = pymysql.connect(host='127.0.0.1',user='root',passwd='123',db='spring_system',port=3306,charset='utf8')
    #打印数据库连接对象
    print('数据库连接对象为:{}'.format(conn))
    # 获取游标
    cur = conn.cursor()

    # ----------删除数据-----------------------
    sql="delete from pyTest"
    try:
        cur.execute(sql)
        conn.commit()
    except:
        conn.rollback()

    # ----------修改数据-----------------------
    # #写法1:sql="update pyTest set name='李四' where id='%s'" %('123')
    # #写法2:
    # sql = "update pyTest set name='王五' where id='123'"
    # try:
    #     cur.execute(sql)
    #     conn.commit()
    # except:
    #     conn.rollback()

    # ----------插入数据-----------------------
    # sql="insert into pyTest(id,name,sex)values('123','张三','男')"
    # try:
    #     #执行sql语句
    #     cur.execute(sql)
    #     #提交到数据库执行
    #     conn.commit()
    # except:
    #     #发生错误时回滚
    #     conn.rollback()

    # ----------创建表-----------------------
    # #如果表已经存在 则使用 execute()方法删除表
    # cur.execute("drop table if EXISTS  pyTest")
    # #创建表sql语句
    # sql="""create table pyTest (
    #       id VARCHAR(20) NOT NULL  PRIMARY KEY,
    #       name VARCHAR(20),
    #       sex CHAR(2)
    #     )"""
    # cur.execute(sql)


    #   ----------进行查询操作-----------------------
    #  #打印游标
    # #print("游标为:{}".format(cur))
    # #print("游标是:"+cur)
    # print("游标是:" + str(cur))
    # #查询sql语句
    # sql='select * from project_jizhan limit 0,1'
    # cur.execute(sql)
    # conn.commit()
    # #使用 fetchall() 方法获取数据对象
    # #data = cur.fetchall()
    # #使用 fetchone() 方法获取一条数据
    # data = cur.fetchone()
    # for item in data:
    #     print(item)
    cur.close()
    conn.close()
except Exception as e:
            print(e)

问题归纳:
1、print(“游标为:{}”.format(cur)) 当我看到这样的输出语句的时候,我就在想:为啥不直接用“+”来拼接?,为啥要用format进行转义?
当我先试着用“+”拼接时
print(“游标是:”+cur),
居然pycharm编译时给我报错:must be str, not Cursor,我很无奈!
但我试着解决问题,我改成print(“游标是:”+str(cur));正确
2.Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。

fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
fetchall():接收全部的返回结果行.
rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
3.事务机制可以确保数据一致性。

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

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

猜你喜欢

转载自blog.csdn.net/tyt_xiaotao/article/details/80158248