python-操作数据库

import pymysql
#1、连接上mysql ip 端口号 密码 账号 数据库
#2、建立游标
#3、执行sql
#4、获取结果
#5、关闭连接、关闭游标
#1
conn=pymysql.connect(host='211.149.218.16',
user='jxz',passwd='123456',#port这里一定要写int类型
port=3306,db='jxz',charset='utf8')#charset必须写utf8,不能写utf-8
#2
cur=conn.cursor()#建立游标,游标可以认为是仓库管理员
#3
cur.execute('select * from bt_stu limit 5;')#执行sql语句
# cur.execute('select * from bt_stu where real_name="%s;"' % name) #可以sql注入的
# cur.execute('select * from bt_stu where real_name=%s and sex = %s',(name,sex)) #可以防止sql注入
conn.commit() #提交
# update delete insert 需要提交

#4
res=cur.fetchall()#获取sql语句执行的结果,结果为一个二维元祖,每一条数据也是一个元祖
res=cur.fetchone()#只获取一条结果,也是一个一维元祖
#只有一条数据,那么就用fetchone,超过一条数据那就用fetchall
# cur.scroll(0,mode='absolute')#移动游标,到最前面
# cur.scroll(3,mode='relative')#移动游标,相对于当前位置的

print(res)
#5
cur.close()#关闭游标
conn.close()#关闭连接



封装一个操作数据库的方法:
import pymysql
def op_mysql(host,user,password,db,sql,port=3306,charset='utf8'):
conn = pymysql.connect(host=host,user=user,
password=password,
port=port,
charset=charset,db=db)
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute(sql)
sql_start = sql[:6].upper() #取sql前6个字符串,判断它是什么类型的sql语句
if sql_start=='SELECT' :
res = cur.fetchall()
else:
conn.commit()
res = 'ok'
cur.close()
conn.close()
return res
#批量执行sql:
sql = 'insert into seq (blue,red,date) values (%s,%s,%s)'
all_res = [
['16','01,02,03,05,09,06','2018-01-28'],
['15','01,02,03,05,09,06','2018-01-28'],
['14','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
['13','01,02,03,05,09,06','2018-01-28'],
]
cur.executemany(sql,all_res) #执行多个条件的。。
conn.commit()





原文地址:https://www.cnblogs.com/hoby2017/p/8337397.html