week9:Python操作MySQL

一、Python操作MySQL


  https://pypi.python.org/pypi  管理各种模块
        
 # c:\python\Scripts    加入环境变量
 

C:\Windows\System32>cd c:\python\Scripts

出现如图,安装成功。这样在C:\python\Lib\site-packages出现了pymysql文件夹

  pip3 install pymysql
   # 下载本地
   # 解压到执行目录    C:\python\Lib\site-packages
   # python2,   默认无pip命令
   # python3,   默认自带pip3命令     如果安装错误,试用下列命令:python3 -m pip install --upgrade pip  
       

pymysql(在python3里)
       - 专门用于操作MySQLpython模块       

MySQLdb只支持Python2.*,还不支持3.*
可以用PyMySQL代替。安装方法:pip install PyMySQL

然后在需要的项目中,把 __init__.py中添加两行:
import pymysql
pymysql.install_as_MySQLdb()
就可以用 import MySQLdb了。其他的方法与MySQLdb一样。

二、使用操作

1、执行SQL   增

import pymysql

# 创建连接
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='hilda1106', db='test', charset='utf8') 
# 创建游标
cursor = conn.cursor()  

cursor.execute("insert into tb1(nid,namename) values(3,'lily')")

# 提交,不然无法保存新建或者修改的数据
conn.commit()

# 关闭游标
cursor.close()
# 关闭连接
conn.close()

 执行SQL,并返回收影响行数

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor()  

# 执行SQL,并返回受影响行数
effect_row = cursor.execute("insert into tb1(nid,namename) values(3,'lily')")
print(effect_row)

# 提交,不然无法保存新建或者修改的数据
conn.commit()

# 关闭游标
cursor.close()
# 关闭连接
conn.close()
import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor() 

# 执行SQL,并返回受影响行数
# effect_row = cursor.execute("insert into tb1(nid,namename) values(3,'lily')")
#字符串拼接可以,但严厉禁止......会出现sql注入问题
# inp = input('请输入姓名:')
# sq1 = "insert into tb1(nid,namename) values(3,'%s')"
# sq1 = sq1 % (inp,)
# effect_row = cursor.execute(sq1)
##参数传递,必须使用参数的形式
# inp = input('请输入姓名:')
# effect_row = cursor.execute('insert into tb1(nid,namename) values(5,%s)',inp)
# print(effect_row)

# effect_row = cursor.execute('insert into tb1(nid,namename) values(%s,%s)', ('3', '会'))
# print(effect_row)

l = [('6', '会1'), ('7', '会2')]
effect_row = cursor.executemany('insert into tb1(nid,namename) values(%s,%s)', l)
print(effect_row)

# 提交,不然无法保存新建或者修改的数据
conn.commit()

# 关闭游标
cursor.close()
# 关闭连接
conn.close()

2、改

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor()  


effect_row = cursor.execute('update tb1 set namename = %s  where nid = %s', ('马',6))
print(effect_row)


# 提交,不然无法保存新建或者修改的数据
conn.commit()

# 关闭游标
cursor.close()
# 关闭连接
conn.close()

3、 删

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor()  


effect_row = cursor.execute('delete from tb1 where nid = %s', (3,))
print(effect_row)


# 提交,不然无法保存新建或者修改的数据
conn.commit()

# 关闭游标
cursor.close()
# 关闭连接
conn.close()

4、 查

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor() 


effect_row = cursor.execute('select * from tb1')
print(effect_row)

result = cursor.fetchall()
print(result)
result = cursor.fetchone()
print(result)

result = cursor.fetmany(3)
print(result)

# 关闭游标
cursor.close()
# 关闭连接
conn.close()

注:在fetch数据时按照顺序进行,可以使用cursor.scroll(num,mode)来移动游标位置,如:

  • cursor.scroll(1,mode='relative')  # 相对当前位置移动
  • cursor.scroll(2,mode='absolute') # 相对绝对位置移动

  需要注意的问题:

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor()  


#字符串拼接可以,但严厉禁止......会出现sql注入问题
# inp = input('请输入姓名:')
sq1 = 'select namename,nid from tb1 where namename="%s" and nid="%s"'
sq1 = sq1 % ('alex', 123)
cursor.execute(sq1)
result = cursor.fetchone()
print(result)


##正规流程
# cursor.execute('select nid,namename from tb1 where nid=%s and namename=%s', (123, 'alex'))  ##%s 不需要加引号
# result = cursor.fetchone()
# print(result)



# 关闭游标
cursor.close()
# 关闭连接
conn.close()

5、fetch数据类型

  关于默认获取的数据是元祖类型,如果想要或者字典类型的数据,即:

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor()  
# 游标设置为字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)



# effect_row = cursor.execute('select * from tb1')
# print(effect_row)
#
# result = cursor.fetchall()
# print(result)  ##输出为字典类型

# effect_row = cursor.execute('select nid from tb1')
# print(effect_row)
#
# result = cursor.fetchall()
# print(result)  ##输出为字典类型
effect_row = cursor.execute('select namename as name from tb1')
print(effect_row)
result = cursor.fetchall()
print(result)  ##输出为字典类型


# 关闭游标
cursor.close()
# 关闭连接
conn.close()

  6、获取新创建数据自增ID   

import pymysql

# 创建连接
conn = pymysql.connect(port=3306, user='root', passwd='hilda1106', db='test', charset='utf8')
# 创建游标
cursor = conn.cursor()  


effect_row = cursor.executemany('insert into tb1(namename) values(%s)', [('ooo'),('ooo'),('ooo')])
print(effect_row)

# 提交,不然无法保存新建或者修改的数据
conn.commit()

#获取最新自增ID
new_id = cursor.lastrowid
print(new_id)

# 关闭游标
cursor.close()
# 关闭连接
conn.close()

        

猜你喜欢

转载自blog.csdn.net/MaHilda/article/details/82726090