本篇为python连接数据库的详细说明,如果急需用python连接数据库,请看这篇模板文章python3连接MySQL数据库模板
python3连接MySQL数据库我们需要安装pymysql
pip install pymysql
安装好后直接
import pymysql
就可以导入第三方库连接数据库
conn = pymysql.connect(
host="localhost",# 指示host表明是本地MySQL还是远程
user="root",# 用户名
password="root",# 密码
db="db4",# 要连接的数据库名
charset="utf8mb4",# 指定字符集,可以解决中文乱码
cursorclass=pymysql.cursors.DictCursor# 固定写法,类似于jdbc里边的加载驱动
)
数据库增删改查(简单写法)
在连接了数据库之后我们就要进行数据库的增删改查
"""
查
"""
sql = "select * from user"cursor = conn.cursor()# 创建一个名为cursor的指针对象
result = cursor.execute(sql)# 执行查询操作,返回的result是受影响的行数data = https://www.it610.com/article/cursor.fetchone()#该方法是获取数据库结果的第一条数据,用元祖表示,若没有则是null (在python中用None表示)
datas = cursor.fetchall()# 该方法得到查询的所有结果,用元祖表示出来# 进行数据处理,数据处理完就可以关闭指针和链接
curosr.close()
conn.close()'''
如果sql语句中有可变的参数可以进行一下方式的处理
'''
sql = "select * from user where id = %s" % 23# python的字符串处理'''
不过这种处理方式容易产生sql注入问题
execute()这个方法其实留有参数的位置,execute(sql语句, 参数位置)
所以我们可以写作如下
'''sql = "select * from user where id = %s and username = %s"
cursor = conn.cursor()
result = cursor.execute(sql, (12, 'zhangsan'))
# 这样就可以有效防止sql注入,或者我们也可以写做如下sql = cursor.mogrify(select * from user where id = %s and username=%s, (12, 'zhangsan'))
cursor = conn.cursor()
result = cursor.execute(sql)
"""
增
"""
conn = pymysql.connect(
host="localhost",
user="root",
password="root",
db="db4",
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor
)cursor = conn.cursor()sql = "insert into user (username, password) values(%s, %s)"result = cursor.execute(sql, ("zhangsan", "123456"))conn.commit()''' 注意这里要提交事务,才可以插入成功 '''cursor.close()
conn.close()
'''值得一提的是。pymysql还提供了executemany()这个神奇的方法,可以一次插入很多条数据'''
'''如下所示'''sql = "insert into user (username, password) values(%s, %s)"
params = [('zhanshen','123'), ('lemon', '123'), ('wangsi', '1234')]
result = cursor.executemany(sql, params)
cursor.close()
conn.close()
'''这里的params可以是一个大列表,里边是一个个的元祖参数,或者也可以是一个大元祖,里边是元祖参数'''
params = cursor.
"""
改
"""
conn = pymysql.connect(
host="localhost",
user="root",
password="root",
db="db4",
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor
)cursor = conn.cursor()sql = "update user set password = %s where username = %s"result = cursor.execute(sql, ("zhangsan", "123456"))conn.commit()cursor.close()
conn.close()
''' 这里并没有什么特别需要注意的,和insert方法一样,删也是一个道理(偷懒省去,滑稽) '''
【mysql|python3连接MySQL数据库,并执行数据库的基本增删改查操作】下面我们可以用
with as
来改善代码conn = pymysql.connect(
host="localhost",
user="root",
password="root",
db="db4",
charset="utf8mb4",
cursorclass=pymysql.cursors.DictCursor
)try:
with conn.cursor() as cursor:
sql = "select * from user"
result = cursor.execute(sql)
print(result)
with conn.cursor() as cursor:
sql = "insert into user (username, password) values (%s, %s)"
result = cursor.execute(sql, ('zhanshen', '123'))
conn.commit()
finally:
conn.close()
'''有木有发现用了with as就可以不用关闭cursor,因为with as会自动帮我们关闭'''
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- mysql|InnoDB数据页结构
- Python专栏|数据分析的常规流程
- javaweb|基于Servlet+jsp+mysql开发javaWeb学生成绩管理系统
- mysql|一文深入理解mysql
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件