python连接数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: python连接数据库

python连接数据库

安装

简介:

PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。

首先是安装环境,下载pymysql

pip3 install pymysql

代码演示

连接数据库

打开Navicat在其中选择一个数据库进行演示,我这里就选择了projectdatabase进行演示。

导入库

import pymysql

连接数据库的代码

放好自己的配置文件信息,本地就是localhost,其他的地方的就是按照别人的域名来看,然后就是用户名,密码,数据库的名字。

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
except pymysql.Error as e:
    print('数据库连接失败'+str(e))

运行结果

创建新表

1、声明一个游标

cur = db.cursor()

2、创建表之前先检查是否存在,如果存在则删除

cur.execute('DROP TABLE IF EXISTS Student')

3、编辑sql语句

sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
cur.execute(sqlQuery)

完整代码

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
except pymysql.Error as e:
    print('数据库连接失败'+str(e))
# 这里创建游标
cur = db.cursor()
cur.execute('DROP TABLE IF EXISTS Student')
# 这里输入sql语句
sqlQuery = "CREATE TABLE Student(Name CHAR(20) NOT NULL ,Email CHAR(20),Age int )"
cur.execute(sqlQuery)

运行结果

插入数据

编写sql语句

sqlQuery=" INSERT INTO Student (Name, Email, Age) VALUE (%s,%s,%s) "

设置具体的值

value=('jake','123456@qq.com',20)

完整代码

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
    # 这里创建游标
    cur = db.cursor()
    # 这里输入sql语句
    sqlQuery = " INSERT INTO Student (Name, Email, Age) VALUE (%s,%s,%s) "
    value = ('jake', '123456@qq.com', 20)
    cur.execute(sqlQuery, value)
    db.commit()
    print('数据插入成功!')
except pymysql.Error as e:
    print("数据插入失败:" + str(e))
    # 如果数据插入失败的话 就事件回滚
    db.rollback()
db.close()

运行结果

查询全部数据

编写sql语句

sqlQuery = "SELECT * FROM Student"

完整代码

python的这个代码有点奇怪,特别需要注意的是这游标需要先执行运行这个sql语句,之后才可以执行fetchall方法,不然会查询失败。

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
    # 这里创建游标
    cur = db.cursor()
    # 这里输入sql语句
    sqlQuery = "SELECT * FROM Student"
    col = cur.execute(sqlQuery) # 查询之前需要先运行sql语句
    results = cur.fetchall() # 只有上面先运行了sql语句这句话才可以运行成功
    print(col) # 结果为影响的条数
    for row in results:
        name = row[0]
        email = row[1]
        age = row[2]
        print('Name:%s,Email:%s,Age:%s'%(name,email,age))
except pymysql.Error as e:
    print("数据查询失败:" + str(e))
db.close()

运行结果

更新表中的数据

编写sql语句

sqlQuery = "UPDATE Student SET Name= %s WHERE Name=%s"

value = ('John', 'jake')

完整代码

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
    # 这里创建游标
    cur = db.cursor()
    # 这里输入sql语句
    sqlQuery = "UPDATE Student SET Name= %s WHERE Name=%s"
    value = ('John', 'jake')
    cur.execute(sqlQuery, value)
    db.commit()
    print('数据更新成功!')
except pymysql.Error as e:
    print("数据更新失败:" + str(e))
    # 发生错误时回滚
    db.rollback()
db.close()

运行结果

通过运行结果可以看出来,对于表格的更新成功了。

删除表中的数据

编写sql语句

sqlQuery = "delete from student where name=%s"
value = ('John')

完整代码

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
    # 这里创建游标
    cur = db.cursor()
    # 这里输入sql语句
    sqlQuery = "delete from student where name=%s"
    value = ('John')
    cur.execute(sqlQuery, value)
    db.commit()
    print('数据更新成功!')
except pymysql.Error as e:
    print("数据更新失败:" + str(e))
    # 发生错误时回滚
    db.rollback()
db.close()

运行结果

数据库中的对应的数据也被删除了。

删除一张表

编写sql语句

sqlQuery='DROP TABLE IF EXISTS Student'

完整代码

import pymysql
DBHOST = 'localhost'
DBUSER = 'root'
DBPASS = '123456'
DBNAME = 'projectdatabase'
try:
    db = pymysql.connect(host=DBHOST,user=DBUSER, password=DBPASS, database=DBNAME)
    print('数据库连接成功!')
    # 这里创建游标
    cur = db.cursor()
    # 这里输入sql语句
    sqlQuery='DROP TABLE IF EXISTS Student'
    cur.execute(sqlQuery)
    db.commit()
    print('数据表删除成功!')
except pymysql.Error as e:
    print("数据表删除失败:" + str(e))
    # 发生错误时回滚
    db.rollback()
db.close()

运行结果

数据库中的这张表也不见了。

如果大家觉得有用的话,可以关注我下面的微信公众号,极客李华,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历等内容,让大家更好学习编程,我的抖音,B站也叫极客李华。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
139 68
|
1月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
254 15
|
2月前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
2月前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
2月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
68 3
|
3月前
|
关系型数据库 MySQL 数据库连接
DBeaver如何连接一个数据库
【10月更文挑战第27天】DBeaver 是一款功能强大的通用数据库管理工具,支持多种主流数据库。本文介绍了使用 DBeaver 连接数据库的基本步骤,包括下载安装、创建新连接、选择数据库类型、配置连接参数、测试连接以及最终连接到数据库。详细的操作指南帮助用户轻松管理和操作数据库。
701 9
|
2月前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
2月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
54 1
|
2月前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
67 1
|
2月前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)