先安装一个 python 与 MySQL 交互的包: MySQL-python
- $ gunzip MySQL-python-1.2.2.tar.gz
- $ tar -xvf MySQL-python-1.2.2.tar
- $ cd MySQL-python-1.2.2
- $ python setup.py build
- $ python setup.py install
- ===========================================================================================================================
- import MySQLdb
- try:
- conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='py_s10',port=3306)
- cur=conn.cursor() #指针 (游标)
- insert_data = "insert into students (name,sex,degree) values(%s,%s,%s,)" #插入数据保存在 insert_data 变量中, students 表的结构为 id, #name,sex,degree
- cur.excute(insert_data,("jack",3,99)) #这里我执行插入数据操作
- cur.execute('select * from students') #执行命令
- print (cur.fetchone()) #取得一条数据 (第一条)
- print (cur.fetchall()) #取得所有数据
- query_res = cur.fetchmany(4) #取得 4 条数据
- conn.rollback() #我在提交之前回滚下, 它的数据是提交不到数据库的
- conn.commit() #提交到数据库, 如果没有这条, 只是写到了内存, 没有真正写入数据库
- cur.close()
- conn.close()
- except MySQLdb.Error,e:
- print "Mysql Error msg:" ,e
一次性插入多条数据 (谨慎操作):
- import MySQLdb
- try:
- conn=MySQLdb.connect(host='localhost',user='root',passwd='123456',db='py_s10',port=3306)
- cur=conn.cursor()
- data_list = []
- for i in range(10):
- data_list.append(('rain_%s' % i,i,i))
- insert_data = "insert into students (name,sex,degree) values(%s,%s,%s,)"
- cur.excutemany(insert_data,data_list) #这里我就一次性插入了 10 条数据
- cur.execute('select * from students')
- cur.scroll(2,mode='ralative') #从现在的光标位置继续往下找
- print (cur.fetchone())
- print (query_res)
- cur.close()
- conn.close()
- except MySQLdb.Error,e:
- print "Mysql Error msg:" ,e
- ==============================================================================================================================
常用函数:
对事务操作的支持, 标准的方法
commit() 提交
rollback() 回滚 #提交了之后就不能回滚了
cursor 用来执行命令的方法:
callproc(self,procname,args): 用来执行存储过程, 接收的参数为存储过程名和参数列表, 返回值为受影响的行数
excute(self,query,args): 执行单条 sql 语句, 接收的参数为 sql 语句本身和使用的参数列表, 返回值为受影响的行数
executemany(self,quiry,args): 执行单条 sql 语句, 但是重复执行参数列表里的参数, 返回值为受影响的行数
nextset(self): 移动到下一个结果集
cursor 用来接收返回值的方法:
fetchall(self): 接收全部的返回结构行
fetchmany(self,size=None): 接收 size 条返回结果行, 如果 size 的值大于返回的结果行的数量, 则会返回 cursor.arraysize 条数据
fetchone(self): 返回一条结果行
scroll(self,value,mode='relative'): 移动指针到某一行, 如果 mode='relative', 则表示从当前所在行移动 value 条, 如果 mode='absolute', 则表示从结果集的第一行移动 value 条 (不常用)
来源: http://www.bubuko.com/infodetail-3149867.html