1.安装mysql模块:pip3 install pymysql
2.文件中引入模块:import pymysql
3.Connection对象:目的:用来建立与数据库的连接
创建:调用connect()方法,如conn=connect(参数列表)
参数列表的参数:host:连接的mysql主机,若为本机则是‘localhost’,否则写目标主机的ip;
port:连接的mysql主机的端口,默认为3306;
db:数据库的名称;
user:连接的用户名:
passwd:连接的密码;
charset:采用的编码方式,一般用utf8;
方法:close():关闭连接;
commit():提交事务;(在py程序中默认是打开事务的,因此所有的数据库操作都需要commit才会生效)
rollback():回滚事务;
cursor():返回一个Cursor对象,该对象中有方法用来执行sql语句并获得结果;
4.Cursor对象:目的:来执行sql语句;
创建:调用Connection对象的cursor()方法;
方法:close()关闭;
execute(operation[,parameters])执行语句,返回受影响的行数;
fetchone()执行查询语句时,获取查询结果集的第一行数据,返回一个元祖;
next()执行查询语句时,获取当前行的下一行;
fetchall()执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回;
scroll(value[,mode])将指针移动到某个位置:mode表示移动方式,默认为relative,基于当前行移动到value,value为正则向下移动,为负则向上移动;mode值为absolute,表示基于第一条数据的位置,第一条数据的位置为0;
属性:rowcount为只读属性,表示最近一次execute()执行后受影响的行数;
connection获得当前连接对象;
例如:
from pymysql import *
try:
#创建连接对象 conn=connect(host="localhost",port=3306,db='test0',user='root',passwd='mysql',charset='utf8')
#创建cursor对象
cs1=conn.cursor()
sname=input("请输入姓名:")
params=[sname]
# 这里使用参数传递的方式,实际上sql操作语句也可以使用变量再当做参数传入
# %s并不代表字符格式,只表示占位,无论后面参数是什么类型都使用%s
count=cs1.execute('insert into students(sname) values(%s)',params)
#提交改动
conn.commit()
#关闭
cs1.close()
conn.close()
except Exception,e:
print e
但一般建议项目开始时就建立好数据库表结构,而不是在代码中进行;此外,可以将数据库的基本操作进行封装,使用类对象,更集中于业务逻辑的构造。
例如:
from pymysql import *
class MysqlHelper(object): def__init__(self,host='localhost',port=3306,db='test2',user='root',passwd='mysql',charset='utf8'):
self.conn=connect(host=host,port=port,db=db,user=user,passwd=passwd,charset=charset)
def insert(self,sql,params):
return self.__cud(sql,params)
def update(self,sql,params):
return self.__cud(sql,params)
def delete(self,sql,params):
return self.__cud(sql,params)
def __cud(self,sql,params=[]):
try:
cs1 = self.conn.cursor()
rows=cs1.execute(sql, params)
self.conn.commit()
cs1.close()
self.conn.close()
return rows
except Exception,e:
print e
self.conn.rollback()
def fetchone(self,sql,params=[]):
try:
cs1=self.conn.cursor()
cs1.execute(sql,params)
row=cs1.fetchone()
cs1.close()
self.conn.close()
return row
except Exception,e:
print e
def fetchall(self,sql,params):
try:
cs1=self.conn.cursor()
cs1.execute(sql,params)
rows=cs1.fetchall()
cs1.close()
self.conn.close()
return rows
except Exception,e:
print e