Python对MySQL数据库的调用,可以采用MySQLdb模块通过建立连接MySQLdb.connect()完成。
# 建立连接,就是实例化一个connect()对象
con = MySQLdb.connect(host="localhost",user="root",passwd="123123",db="qiwsirtest",charset="utf8")
-
connect()对象(官方文档)有三个常用方法:
-
commit() 官方文档
>>> cursor.execute("INSERT INTO employees (first_name) VALUES (%s)", ('Jane')) # 游标的操作 >>> cnx.commit() # connect的操作
向MySQL服务器提交当前事务。
-
rollback() 官方文档
>>> cursor.execute("INSERT INTO employees (first_name) VALUES (%s)", ('Jane')) >>> cnx.rollback()
当前事务中对数据的所有操作全部撤回,有点向ctrl+z
-
close() 官方文档
cnx.close()
等价于
MySQLConnection.disconnect()
cursor = connect.cursor([arg=value[, arg=value]...]) # 返回一个MySQLCursor() object
**游标(cursor)**是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。
游标主要用于交互式应用,其中用户需要滚动屏幕上的数据,并对数据进行浏览或做出更改。
**MySQL检索操作返回一组称为结果集的行。**这组返回的行都是与SQL语句相匹配的行(零行或多行)。使用简单的SELECT语句,例如,没有办法得到第一行、下一行或前10行,也不存在每次一行地处理所有行的简单方法(相对于成批地处理它们)。
有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。
简单理解:SELECT出的结果是黑盒整体,不能再进行拆分操作,而游标就是把SELECT的结果做为等值对象,附加新功能,就是可以进入导结果内部,再进行细致操作。
-
MySQLdb用游标(指针)cursor的方式操作数据库,cursor()提供的方法主要实现
- 执行命令
# 插入单条记录
>>> cur.execute("insert into users (username,password,email) values (%s,%s,%s)",("python","123456","[email protected]"))
1L # 返回受影响的行数,此处只有1行
### 上述命令只是作出操作,数据库本身并未改变,如要数据库改变,需要下属命令
>>> conn.commit() # 上面是游标操作,这里是将操作这件事务提交给数据库,相当于文本操作后需要ctrl+s保存
-------------------------------------------------------------------------------------------
# 插入多条记录
>>> cur.executemany("insert into users (username,password,email) values (%s,%s,%s)",(("google","111222","[email protected]"),("facebook","222333","[email protected]"),("github","333444","[email protected]"),("docker","444555","[email protected]"))) # Value值有多个
4L
>>> conn.commit()
# 对于发生操作的那几行,如果想要调查查看
fetchall(self):接收全部的返回结果行.
fetchmany(size=None):接收size条返回结果行.如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据.
fetchone():返回一条结果行.
scroll(value, mode='relative'):移动指针到某一行.如果mode='relative',则表示从当前所在行移动value条,如果mode='absolute',则表示从结果集的第一行移动value条.