python3连接mysql--增删改查

157 阅读2分钟

这是我参与8月更文挑战的第12天,活动详情查看: 8月更文挑战

大家好,我是辰哥~

今天给大家分享一下Python3连接mysql3,并进行增删改查操作。

下面是安装mysql库的时需要注意的点:

ps:MYSQLdb只适用于python2.x

python3不支持MYSQLdb,取而代之的是pymysql

运行会报:ImportError:No module named 'MYSQLdb'

导入相应的库

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。


import pymysql as pmq
 
#connect(ip.user,password,dbname)
con = pmq.connect('localhost','root','123456','python_test')
#操作游标
cur = con.cursor()

建表

#建表
cur.execute("CREATE TABLE IF NOT EXISTS  Writers(Id INT PRIMARY KEY AUTO_INCREMENT,Name VARCHAR(25))")

插入数据


#插入数据一
cur.execute("INSERT INTO Writers(Name) VALUES('Jack London')")
cur.execute("INSERT INTO Writers(Name) VALUES('Honore de Balzac')")
cur.execute("INSERT INTO writers VALUES(1,'Jack London')")
cur.execute("INSERT INTO writers VALUES(2,'Honore de Balzac')")
 
#提交到数据库 -------ps:不写这一行无法插入
con.commit()
 
#插入数据二
sql="INSERT INTO Writers(Name) VALUES('Jack London2')"
try:
#执行sql语句
cur.execute(sql)
#提交到数据库执行
con.commit()
except:
#如果发生错误则回滚
con.rollback()

查询数据

fetchall

下面cursor.execute则是真正执行MySQL语句,即查询TABLE_PARAMS表的数据。

至于fetchall()则是接收全部的返回结果行 row就是在python中定义的一个变量,用来接收返回结果行的每行数据。同样后面的r也是一个变量,用来接收row中的每个字符,如果写成C的形式就更好理解了

下面脚本和上面增加数据,除了执行sql语句部分不一样,其余都一样

#查询
cur.execute('select * from writers')
 
results = cur.fetchall()
 
for row in results:
    Id = row[0]
    Name = row[1]
    print("id=%s,name=%s" % (Id,Name))

更新数据

#更新
Id= 1
sql ="update writers set Name='updateJackto' where Id = {0}".format(Id)
try:
    cur.execute(sql)
    con.commit()
except:
    con.rollback()
 

删除数据

#删除
Id=7
sql = "delete from writers where Id = {0}".format(Id)
try:
    cur.execute(sql)
    con.commit()
except:
    con.rollback()