Pymyaql操作数据库

Pymyaql操作数据库

Python3中专门用于操作Mysql数据库的模块。

一、 导入模块

import pymysql

二、 创建连接

conn=pymysql.connect(host=’127.0.0.1’,port=3306,user=’root’,passwd=’root’,db=’数据库名’,charset=’utf8’)

三、创建游标

cursor=conn.cursor()

三、 执行SQL语句

1、执行固定的sql语句

cursor.execute(‘要执行的SQL语句’)

2、执行可变的sql语句

(1)增

A.字符串拼接可以执行(会产生SQL注入的风险)

Inp=input(‘请输入内容’)

Sql=‘insert into 表名(列名) values (“%s”)’

Sql=Sql % (Inp,)

cursor.execute(Sql)

B、参数传递(推荐使用)

Inp=input (‘请输入内容:’)

cursor.execute(‘ insert into 表名(列名)values(%s)’,Inp)

插入多个值:

cursor.execute(‘insert into 表名(列名,列名) values(%s,%s),(‘值1’,‘值2’)

l=[(‘值1’,’值2’),(‘值3’,’值4’)]

cursor.executemany(‘insert into 表名(列名,列名)values(%s,%s)’,l)

(2)删

cursor.execute('delete from test1 WHERE id=%s',5)              #删除表test1中id为5的数据行

 (3)改

cursor.execute('update test1 set age=%s WHERE sss=%s',(18,‘aaa’))    #更新test1表中sss列中aaa对应的age列的值为18。

(4)査

<a>fetch法

result=cursor.fetchall()          #取出表中所有数据

print (result)                         #将表中数据以元组的形式打印出来

result=cursor.fetchone()        #取出表中第一条数据

print (result)                         #将表中第一条数据以元组的形式打印出来

result=cursor.fetchmany(3)        #取出表中前3条数据

print (result)                         #将表中前3条数据以元组的形式打印出来

注:使用fetch的方法取数据时,游标会依次向下移动,即:

result=cursor.fetchone()        #取出表中第一条数据

print (result)                         #将表中第一条数据以元组的形式打印出

result=cursor.fetchone()        #取出表中第二条数据

print (result)                         #将表中第二条数据以元组的形式打印出

此时,可以使用scroll的方法移动游标。cursor.scroll(0,mode=’absolute’) #游标返回原点(绝对模式)

cursor.scroll(-2,mode=’relative’)    #游标向上移动2个(相对模式)

<b>将表中数据以字典的形式返回:

创建游标:cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)

取数据:cursor.execute(‘select * from 表名’)

                 print (cursor.fetchall())

如果只取个别列的数据,只需将*改成对应列的列名即可。

<c>取出刚插入数据行的自增列的对应数据:

 cursor.execute(‘insert into 表名(列名)values(%s)’,(‘值’))

conn.commit()

print (cursor.lastrowid)            #刚插入数据行的自增列的数字

四、 提交事务

在创建了要执行的SQL语句后,并不会立即执行,而是需要提交事务,否则创建无效。

conn.commit()

五、 关闭游标

cursor.close( )

六、 关闭连接

conn.close( )

posted @ 2017-12-31 11:19  xsan  阅读(329)  评论(0编辑  收藏  举报