python操作MySQL,首先是导入pymysql这个库,然后创建连接——pymysql.connect()
import pymysql
#打开数据库连接
conn = pymysql.connect(host="192.168.8.246",port=3306,user=root,password = 000000,database="test",charset="utf8")
'''
host 数据库主机地址
post MySQL默认端口3306
user、password MySQL用户
database 打开的数据库名字
charset 以utf-8形式打开,注意写utf8
'''
第二步则是创建游标,相当于cmd的光标
cursor = conn.cursor()
第三步为使用execute()执行一条MySQL语句,并返回受影响的行数
在这里要注意的一点是,python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作,因此插入完数据后需要加conn.commit()
在此如果对MySQL语句不熟悉的同学可以先去了解一下,不难的
effect_row = cursor.execute("select * from student")
print(effect_row)
#此时输出为一个整数
第四步是执行完mysql语句操作后先关闭游标,再关闭连接
#1.关闭游标
cursor.close()
#2.关闭连接
conn.close()
这里是创建连接并操作的一个完整的简单的例子:
import pymysql
conn = pymysql.connect(host="192.168.8.246",port=3306,user=root,password = 000000,database="test",charset="utf8")
cursor = conn.cursor()
sql = """ CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(2).
INCOME FLOAT)"""
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
#executemany()
#executemany()执行多条语句并执行,并返回受影响行数。这里需要注意的一点是:列表里数组的每个元素都必须是元组
effect_row = cursor.executemany("insert into hosts(host,color_id)values(%s,%s)", [("1.1.1.11",1),("1.1.1.11",2)])
#获取最新数据的id
last_id=cursor.lastrowid
print("最后一条数据的ID是:", last_id)
#try except使用
try:
# 执行sql语句
cursor.execute(sql)
# 执行sql语句
conn.commit()
except:
# 发生错误时回滚
conn.rollback()
#数据库查询结果显示操作
# 获取第一行数据,返回元组:(1, 'Mr.Weng', 'woman', 38)
row_1 = cursor.fetchone()
# 获取前n行数据,返回元组:((2, 'Mr.Zhou', 'man', 38), (3, 'Mr.Ni', 'm', 37), (4, 'Mr.Chong', 'm', 40))
row_2 = cursor.fetchmany(3)
# 获取所有数据,返回元组:((2, 'Mr.Zhou', 'man', 38), (3, 'Mr.Ni', 'm', 37), (4, 'Mr.Chong', 'm', 40))
row_3 = cursor.fetchall()
#try 和 fetchall
try:
# 执行SQL语句
cursor.execute(sql)
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
# 打印结果
print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income ))
except:
print ("Error: unable to fetch data")