Python怎么操作数据库(一)

简介: 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)


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
378 7
|
3月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
3月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
334 0
|
7月前
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
693 77
|
9月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
10月前
|
关系型数据库 数据库 数据安全/隐私保护
云数据库实战:基于阿里云RDS的Python应用开发与优化
在互联网时代,数据驱动的应用已成为企业竞争力的核心。阿里云RDS为开发者提供稳定高效的数据库托管服务,支持多种数据库引擎,具备自动化管理、高可用性和弹性扩展等优势。本文通过Python应用案例,从零开始搭建基于阿里云RDS的数据库应用,详细演示连接、CRUD操作及性能优化与安全管理实践,帮助读者快速上手并提升应用性能。
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
282 68
|
9月前
|
SQL 关系型数据库 数据库连接
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
1139 15
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。

热门文章

最新文章

推荐镜像

更多