少女祈祷中...

Python-Mysql基本使用


本篇概述:记录python——mysql的一些操作


1、MySQLdb

python连接mysql用的模块。MySQLdb主要还是聚焦于如何和数据库进行连接和进行基本的操作,操作的体现形式主要还是进行SQL语句的执行。

  • 安装
1
pip3 install mysqlclient

2、基本使用

1、数据库连接

1
2
3
4
5
6
import MySQLdb
# 连接数据库 ——> 主机host,端口,用户,密码,数据库,编码
conn = MySQLdb.connect(host='localhost',port=3306,user='你的账号',passwd='你的密码',db='你要操作的数据库',charset='utf8')
# 连接成功后,创建一个游标对象用于操作数据库
# 获取到游标后再进行数据库操作
cur = conn.cursor()

2、查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查询
cur.execute("SELECT VERSION()") # 这里不返回结果,只是执行
version = cur.fetchall()
# 返回的是元组 (('5.7.14',),)

# fetchall() 是返回所有匹配 的元组,接收全部的返回结果行
# fetchone() 只返回一个匹配的元组,然后游标后移
# 我这里用了自己数据库中的一个表演示fetchall()和fetchone()
# 1. fetchall()
cur.execute("SELECT * from test")
a = cur.fetchall()
print(a,len(a))
# 这里数据量太大,结果就不放出来了

# 2. fetchone()
cur.execute("SELECT * from test")
data = cur.fetchone()
i = 0
while i<10:
print(data)
i += 1
data = cur.fetchone()

附图

fetchone()

3、插入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 插入
# sql语句,%s占位
sql = "INSERT INTO test(date,tag,title,link) VALUES(%s,%s,%s,%s)"

# 1. 插入一条execute() data是元组
data = ('19/02/14', 'Android', 'Android\xa0fdget()\xa0优化导致的\xa0binder\xa0UAF\xa0漏洞(CVE-2019-2000)\xa0:', 'https://bugs.chromium.org/p/project-zero/issues/detail?id=1719')
try:
cur.execute(sql,data)
# 事务commit后才会真正插入数据
conn.commit()
except Exception,e:
# 出错回滚
conn.rollback()
finally
cur.close()
conn.close() # 断开数据库连接

# 2. 批量插入executemany()
datas = [('19/02/14', 'Android', 'Android\xa0fdget()\xa0优化导致的\xa0binder\xa0UAF\xa0漏洞(CVE-2019-2000)\xa0:', 'https://bugs.chromium.org/p/project-zero/issues/detail?id=1719'),('19/02/14', 'IoTDevice', '以家庭路由为例讲解 IoT 逆向工程:', 'http://va.ler.io/myfiles/dva/iot-rev-engineering.pdf')]
try:
cur.executemany(sql,datas)
conn.commit()
except Exception,e:
# 出错回滚
conn.rollback()
finally:
cur.close()
conn.close() # 断开数据库连接

4、修改,更新

1
2
3
4
5
6
7
8
9
10
# sql
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
try:
cur.execute(sql)
conn.commit()
except:
conn.rollback()
finally:
cur.close()
conn.close()

5、删除

1
2
3
4
5
6
7
8
9
10
# sql 删除数据,年龄大于20
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try
cur.execute(sql)
conn.commit()
except:
conn.rollback()
finally:
cur.close()
conn.close()
-------------本文结束感谢您的阅读-------------

本文标题:Python-Mysql基本使用

文章作者:Coder-Sakura

发布时间:2019年04月22日 - 21:08:02

最后更新:2019年11月15日 - 00:47:52

原始链接:https://coder-sakura.github.io/blog/2019/04/22/py-mysql/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。