这是我参与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()