安装pymysql:
• Python3:pip install pymysql
• Python2:pip install mysqldb
Python操作MySQL步骤:
step 1:创建connection,用来连接数据库
step 2:获取cursor,通过connection对象去获取游标(相当于指针)
step 3:执行查询、执行命令、获取数据、处理数据
step 4:关闭cursor
step 5:关闭connection
代码如下:
import pymysql
conn = pymysql.connect(host="localhost", port=3306, database="Logic_edu", user="root", password="root", charset="utf8")
实际上,可通过conn这个对象进行关闭连接,提交等。具体方法如下:
• conn.close() 关闭连接
• conn.commit() 提交
• conn.cursor() 返回cursor对象,用于执行sql语句并获得结果
conn.cursor()表示从连接对象中获取游标对象。另外可通过cs这个对象关闭游标,执行sql语句等。具体方法如下:
• cs.close() 关闭游标
• cs.execute(operation [, parameters ]) 执行语句,返回受影响的行数
• cs.fetchone() 执行查询语句时,获取结果集第一行数据,且返回元组
• fetchall() 执行查询语句时,获取结果集的所有行,且为二维元组
Python操作MySQL的具体实现:
查询数据:
import pymysql
conn = pymysql.connect(host="localhost", port=3306, database="Logic_edu", user="root", password="root", charset="utf8")
cs = conn.cursor() # 获取游标,用cs对象接收
res = cs.execute("select * from student")
# res1 = cs.fetchall() # 执行查询语句时,获取结果集所有行,且返回二维元组
# res2 = cs.fetchone() # 执行查询语句时,获取结果集第一行数据,且返回元组
res3 = cs.fetchmany(2) # 获取多行数据
cs.close() # 关闭游标
conn.close() # 关闭数据库连接
新增数据:
import pymysql
conn = pymysql.connect(host="localhost",port=3306,database="logic_edu",user="root",password="root",charset="utf8")
sql = 'insert into student (name) values("张三")'
# 插入多个字段的值
# sql = 'insert into student (name,age) values (%s,%s)'
# res = cursors.executemany(sql,("Mei",18))
# 同时多行插入多个字段的值
# sql = 'insert into student (name,age) values (%s,%s)'
# res = cursors.execute(sql,(("Mei",18),("John",22)))
cursors = conn.cursor()
res = cursors.execute(sql)
conn.commit() #innodb 需要通过commit才能执行 增删改 语句
修改数据:
import pymysql
conn = pymysql.connect(host="localhost",port=3306,database="logic_edu",user="root",password="root",charset="utf8")
sql = 'update student set name = "老王" where id = 1'
cursors = conn.cursor()
cursors.execute(sql)
conn.commit()
删除数据:
import pymysql
conn = pymysql.connect(host="localhost",port=3306,database="logic_edu",user="root",password="root",charset="utf8")
sql = 'delete from student where id=1'
cursors = conn.cursor()
cursors.execute(sql)
conn.commit()