Python-MySQL summary

1. 安装MySQL, Python, MySQL-python

MySLQ-python下载地址:https://pypi.python.org/pypi/MySQL-python/

下载MySQL-python-1.2.5.zip 文件之后直接解压。进入MySQL-python-1.2.5目录:

>>python setup.py install

MySQL-python API说明:


2. 使用
create connection ( MySQLdb.connect )
-> connection.cursor()
-> cursor.operations... (execute)
-> cursor.close 
-> connection.commit,close

1) 基本操作:
   
   
#coding=utf-8
import MySQLdb
onn = MySQLdb.connect(

c
host = ' localhost ' ,

port = 3306 ,

user = ' root ' ,

passwd = ' 123456 ' ,

db = ' test ' ,

)

cur = conn.cursor()
# 创建数据表
# cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")
# 插入一条数据
# cur.execute("insert into student values('2','Tom','3 year 2 class','9')")
# 修改查询条件的数据
# cur.execute("update student set class='3 year 1 class' where name = 'Tom'")
# 删除查询条件的数据
# cur.execute("delete from student where age='9'")
cur.close()
conn.commit()
conn.close()
复制代码

>>> conn = MySQLdb.connect(host='localhost',port = 3306,user='root', passwd='123456',db ='test',)

Connect() 方法用于创建数据库的连接,里面可以指定参数:用户名,密码,主机等信息。这只是连接到了数据库,要想操作数据库需要创建游标。


>>> cur = conn.cursor()

通过获取到的数据库连接conn下的cursor()方法来创建游标。


>>> cur.execute("create table student(id int ,name varchar(20),class varchar(30),age varchar(10))")

通过游标cur 操作execute()方法可以写入纯sql语句。通过execute()方法中写如sql语句来对数据进行操作。

 

>>>cur.close()

cur.close() 关闭游标

>>>conn.commit()

conn.commit()方法在提交事物,在向数据库插入一条数据时必须要有这个方法,否则数据不会被真正的插入。

>>>conn.close()

Conn.close()关闭数据库连接


2) 插入数据:

  
  
# 插入一条数据
sqli= " insert into student values(%s,%s,%s,%s) "
cur.execute(sqli,( ' 3 ' , ' Huhu ' , ' 2 year 1 class ' , ' 7 ' ))
#一次插入多条记录
   
   
sqli= " insert into student values(%s,%s,%s,%s) "
cur.executemany(sqli,[
( ' 3 ' , ' Tom ' , ' 1 year 1 class ' , ' 6 ' ),
( ' 3 ' , ' Jack ' , ' 2 year 1 class ' , ' 7 ' ),
( ' 3 ' , ' Yaheng ' , ' 2 year 2 class ' , ' 7 ' ),
])
3) 查询数据
cursor.fetchone()
cursor.scroll()
cursor. fetchmany()
cursor.fetchall()

>>>aa=cur.execute("select * from student")

>>>print aa

5

它获得的只是我们的表中有多少条数据。

获得数据:

    
    
>>> import MySQLdb
>>> conn = MySQLdb.connect(host= ' localhost ' ,port = 3306,user= ' root ' , passwd= ' 123456 ' ,db = ' test ' ,)
>>> cur = conn.cursor()
>>> cur.execute( " select * from student " )
5L
>>> cur.fetchone()
( 1L, ' Alen ' , ' 1 year 2 class ' , ' 6 ' )
>>> cur.fetchone()
( 3L, ' Huhu ' , ' 2 year 1 class ' , ' 7 ' )
>>> cur.fetchone()
( 3L, ' Tom ' , ' 1 year 1 class ' , ' 6 ' )
...
>>>cur.scroll(0, ' absolute ' )
复制代码

 

fetchone()方法可以帮助我们获得表中的数据,可是每次执行cur.fetchone() 获得的数据都不一样,换句话说我每执行一次,游标会从表中的第一条数据移动到下一条数据的位置,所以,我再次执行的时候得到的是第二条数据。

scroll(0,'absolute') 方法可以将游标定位到表中的第一条数据。

打印多条数据:

    
    
# 获得表中有多少条数据
aa=cur.execute( " select * from student ")
print aa

# 打印表中的多少数据
info = cur.fetchmany(aa)
for ii in info:
print ii
cur.close()
conn.commit()
conn.close()
4) 其它操作
connection.select_db()
cursor.executemany()
cur.fetchall()

commit() 提交
rollback() 回滚

cursor用来执行命令的方法:
callproc(self, procname, args):用来执行存储过程,接收的参数为存储过程名和参数列表,返回值为受影响的行数
execute(self, query, args):执行单条sql语句,接收的参数为sql语句本身和使用的参数列表,返回值为受影响的行数
executemany(self, query, 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条.


3. 其它例子

import MySQLdb
 
try:
    conn=MySQLdb.connect(host='localhost',user='root',passwd='root',port=3306)
    cur=conn.cursor()
     
    cur.execute('create database if not exists python')
    conn.select_db('python')
    cur.execute('create table test(id int,info varchar(20))')
     
    value=[1,'hi rollen']
    cur.execute('insert into test values(%s,%s)',value)
     
    values=[]
    for in range(20):
        values.append((i,'hi rollen'+str(i)))
         
    cur.executemany('insert into test values(%s,%s)',values)
 
    cur.execute('update test set info="I am rollen" where id=3')
 
    conn.commit()
    cur.close()
    conn.close()
 
except MySQLdb.Error,e:
     print "Mysql Error %d: %s" % (e.args[0], e.args[1])
  
  

请注意一定要有conn.commit()这句来提交事务要不然不能真正的插入数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值