Python怎么操作数据库(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Python怎么操作数据库(一)

Python MySQL

Python 可以在数据库应用程序中使用。

MySQL 是最受欢迎的数据库之一。

MySQL 数据库

为了能够试验本教程中的代码示例,您应该在计算机上安装 MySQL。

请在这里下载免费的 MySQL 数据库:MySQL :: MySQL Downloads

安装 MySQL 驱动程序

Python 需要 MySQL 驱动程序来访问 MySQL 数据库。

在本教程中,我们将使用驱动程序 "MySQL Connector"。

我们建议您使用 PIP 安装 "MySQL Connector"。

PIP 很可能已经安装在 Python 环境中。

将命令行导航到 PIP 的位置,然后键入以下内容:

下载并安装 "MySQL Connector":

python -m pip install mysql-connector

测试 MySQL Connector

如需测试安装是否成功,或者您是否已安装 "MySQL Connector",请创建一张包含以下内容的 Python 页面:

demo_mysql_test.py:

import mysql.connector

如果执行上述代码没有错误,则 "MySQL Connector" 已安装并待用。

创建连接

首先创建与数据库的连接。

使用 MySQL 数据库中的用户名和密码:

demo_mysql_connection.py:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456"
)
print(mydb)

现在,您可以开始使用 SQL 语句查询数据库了。

Python 创建数据库

创建数据库

如需在 MySQL 中创建数据库,请使用 "CREATE DATABASE" 语句:

实例

创建名为 "mydatabase" 的数据库:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE mydatabase")

如果执行上面的代码没有错误,则您已成功创建数据库。

检查数据库是否存在

您可以通过使用 "SHOW DATABASES" 语句列出系统中的所有数据库,检查数据库是否存在:

实例

返回系统中的数据库列表:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW DATABASES")
for x in mycursor:
  print(x)

或者您可以在建立连接时尝试访问数据库:

实例

尝试连接数据库 "mydatabase":

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)

如果数据库不存在,会收到错误。

Python 创建表

创建表

如需在 MySQL 中创建表,请使用 "CREATE TABLE" 语句。

请确保在创建连接时定义数据库的名称。

实例

创建表 "customers":

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")

如果执行上面的代码没有错误,那么您现在已经成功创建了一个表。

检查表是否存在

您可以通过使用 "SHOW TABLES" 语句列出数据库中的所有表,来检查表是否存在:

实例

返回系统中的数据库列表:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SHOW TABLES")
for x in mycursor:
  print(x)

主键

创建表时,您还应该为每条记录创建一个具有唯一键的列。

这可以通过定义 PRIMARY KEY 来完成。

我们使用语句 "INT AUTO_INCREMENT PRIMARY KEY",它将为每条记录插入唯一的编号。从 1 开始,每个记录递增 1。

实例

创建表时创建主键:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE customers (id INT AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(255), address VARCHAR(255))")

如果表已存在,请使用 ALTER TABLE 关键字:

实例

在已有的表上创建主键:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

插入表

如需填充 MySQL 中的表,请使用 "INSERT INTO" 语句。

实例

在表 "customers" 中插入记录:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("John", "Highway 21")
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, "record inserted.")

重要:请注意语句 mydb.commit()。需要进行更改,否则表不会有任何改变。

插入多行

要在表中插入多行,请使用 executemany() 方法。

executemany() 方法的第二个参数是元组列表,包含要插入的数据:

实例

用数据填充 "customers" 表:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = [
  ('Peter', 'Lowstreet 4'),
  ('Amy', 'Apple st 652'),
  ('Hannah', 'Mountain 21'),
  ('Michael', 'Valley 345'),
  ('Sandy', 'Ocean blvd 2'),
  ('Betty', 'Green Grass 1'),
  ('Richard', 'Sky st 331'),
  ('Susan', 'One way 98'),
  ('Vicky', 'Yellow Garden 2'),
  ('Ben', 'Park Lane 38'),
  ('William', 'Central st 954'),
  ('Chuck', 'Main Road 989'),
  ('Viola', 'Sideway 1633')
]
mycursor.executemany(sql, val)
mydb.commit()
print(mycursor.rowcount, "was inserted.")

获取已插入 ID

您可以通过询问 cursor 对象来获取刚插入的行的 id。

注释:如果插入不止一行,则返回最后插入行的 id。

实例

插入一行,并返回 id:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
val = ("Michelle", "Blue Village")
mycursor.execute(sql, val)
mydb.commit()
print("1 record inserted, ID:", mycursor.lastrowid)

从表中选取

如需从 MySQL 中的表中进行选择,请使用 "SELECT" 语句:

实例

从表 "customers" 中选取所有记录,并显示结果:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

注释:我们用了 fetchall() 方法,该方法从最后执行的语句中获取所有行。

选取列

如需只选择表中的某些列,请使用 "SELECT" 语句,后跟列名:

实例

仅选择名称和地址列:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT name, address FROM customers")
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

使用 fetchone() 方法

如果您只对一行感兴趣,可以使用 fetchone() 方法。

fetchone() 方法将返回结果的第一行:

实例

仅获取一行:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM customers")
myresult = mycursor.fetchone()
print(myresult)

使用筛选器来选取

从表中选择记录时,可以使用 "WHERE" 语句对选择进行筛选:

实例

选择记录为 "Park Lane 38" 的记录,结果:

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="bd",
  passwd="123456",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT * FROM customers WHERE address ='Park Lane 38'"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
消息中间件 关系型数据库 数据库
Python实时监测数据库表数据变化的方法
在实现时,需要考虑到应用的实时性需求、数据库性能影响以及网络延迟等因素,选择最适合的方法。每种方法都有其适用场景和限制,理解这些方法的原理和应用,将帮助开发者在实际项目中做出最合适的技术选择。
45 17
|
23天前
|
存储 前端开发 关系型数据库
秀啊,用Python快速开发在线数据库更新修改工具
秀啊,用Python快速开发在线数据库更新修改工具
|
23天前
|
前端开发 数据库 虚拟化
太6了!用Python快速开发数据库入库系统
太6了!用Python快速开发数据库入库系统
|
23天前
|
前端开发 数据库 Python
用Python轻松开发数据库取数下载工具
用Python轻松开发数据库取数下载工具
|
23天前
|
SQL API 数据库
原来Python自带了数据库,用起来真方便!
原来Python自带了数据库,用起来真方便!
|
24天前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
3天前
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
9 0
|
24天前
|
关系型数据库 MySQL 大数据
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
教你使用Python玩转MySQL数据库,大数据导入不再是难题!
|
1月前
|
SQL NoSQL 数据库
在Python中使用sqlalchemy来操作数据库的几个小总结
在探索使用 FastAPI, SQLAlchemy, Pydantic,Redis, JWT 构建的项目的时候,其中数据库访问采用SQLAlchemy,并采用异步方式。数据库操作和控制器操作,采用基类继承的方式减少重复代码,提高代码复用性。在这个过程中设计接口和测试的时候,对一些问题进行跟踪解决,并记录供参考。
|
1月前
|
SQL 关系型数据库 数据库
【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】
【python】python社交交友平台系统设计与实现(源码+数据库)【独一无二】
65 10