菜鸟写Python-连接MySQL数据库打通python连接mysql数据库的基本操作
菜鸟写Python-连接MySQL数据库:打通python连接mysql数据库的基本操作
之前文章中详细介绍python使用sqlite的基本理论: ,本文中,我们在通过一个案例探寻mysql的使用,看完本文,你能基本掌握mysql的操作。
1 环境:python3.6 + mysql 1.1.7 + pyCharm
2 准备:
2.1 本安装mysql+Navicat for mysql (本文不介绍这步,安装数据库请自行百度或私下问我);
2.2 安装python的mysql驱动包(环境首次使用mysql必要操作):
pip3 install MySQL_Python
安装mysql driver,已安装的请忽略。若这个方式安装失败,或者安装速度慢,请尝试用下先下载到本地whl文件的,在通过本地安装的方式安装。详见:
3 python代码操作mysql数据库七步曲:
3.1 import MySQLdb 数据库驱动
3.2 通过驱动连接数据库:conn=MySQLdb.connect(“mysql用户名密码等连接参数配置”)
3.3 通过连接生成执行数据库的cursor:cursor=conn.cursor()
3.4 拼凑sql语句: sql=‘select * from article’
3.5 执行sql语句: cursor.execute(sql)
3.6 获取执行结果 data=cursor.fetchall()
3.7 提交并关闭数据库 conn.commit() & conn.close()
基本上mysql数据库的操作通过以上七个步骤连执行,具体的插入,更新,删除,查询等通过sql语句操作变化就行。
4 代码示例:
4.1 查询数据库:
# 导入驱动
import MySQLdb
# 打开数据库连接(数据库地址,数据库用户名,密码,数据库,字符)
db = MySQLdb.connect("127.0.0.1", "root", "test123", "webarticle", charset='utf8' )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# 使用execute方法执行SQL语句:选择article全部数据
cursor.execute("select * from article")
# 使用 fetchall() 方法获取全部数据/fetchallone() 获取一条数据
data = cursor.fetchall()
for result in data:
print(result)
# 关闭数据库连接
db.close()
执行效果:
4.2 插入
import MySQLdb
# 打开数据库连接
db=MySQLdb.connect('127.0.0.1','root','smaluv123','meijiangbbs',charset='utf8',use_unicode=True)
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
LAST_NAME, AGE, SEX, INCOME)
VALUES ('AAA', 'cc', 1, 'L', 2000)
"""
try:
# 执行sql语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# Rollback in case there is any error
db.rollback()
# 关闭数据库连接
db.close()
4.3 删除
import MySQLdb
# 打开数据库连接
db = MySQLdb.connect('127.0.0.1','root','smaluv123','meijiangbbs',charset='utf8',use_unicode=True)
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 删除语句
sql = "DELETE FROM article WHERE title = '删除文章'"
try:
# 执行SQL语句
cursor.execute(sql)
# 提交修改
db.commit()
except:
# 发生错误时回滚
db.rollback()
# 关闭连接
db.close()
这些操作基本都是一样发的,就是sql语句会有一些不同,其他的操作可以参考:
2 cursor游标对象有如下属性和方法:
2.1 常用方法:
**close():关闭此游标对象
fetchone():得到结果集的下一行
fetchmany([size = cursor.arraysize]):得到结果集的下几行
fetchall():得到结果集中剩下的所有行
excute(sql[, args]):执行一个数据库查询或命令
excutemany(sql, args):执行多个数据库查询或命令**
2.2 常用属性:
connection:创建此游标对象的数据库连接
arraysize:使用fetchmany()方法一次取出多少条记录,默认为1