使用 python 链接 mysql 数据库

489 阅读4分钟

使用 python连接数据库

Python 中数据库通信的四个阶段如下:

1、创建连接对象

2、创建游标对象

3、与数据库交互

4、关闭连接

1、创建连接对象

我们使用 connect () 为程序与数据库的连接创建一个对象。此过程可自动登录到数据库并选择要使用的数据库。

调用 connect() 函数并将结果分配给变量的语法如下:

[变量] = MysQLdb.connect([主机名],[用户名],[密码],[数据库名称])

在分配值时命名这些变量不是必需的,但在习惯函数调用的格式之前,这是一种很好的做法。我们将使用以下格式来调用connect()函数:


[变量] = MysQLdb.connect (host=“ [hostname]”,
                            user=“ [用户名] ”,
                            passwd=“[password]”,
                            db=“[数据库名称]”)

假设我们有一个数据库驱动的应用程序,用于为一家海鲜餐厅创建菜单。我们需要从菜单数据库中查询所有鱼,以便将它们输入到新菜单中。数据库名为menu。

如果您没有名为menu的数据库,则无法使用这些示例连接到该数据库。

若要创建我们在此示例中使用的数据库,请将以下代码放入名为 menu.sql 的文本文件中:

CREATE DATABASE menu;
USE menu;

DROP TABLE IF EXISTS fish;

SET @saved_cs_client=@@character_set_client; 

SET character_set_client=utf8;

CREATE TABLE fish(

ID int(11) NOT NULL auto_increment,
NAME varchar(30) NOT NULL default '' ,
PRICE decimal(5,2) NOT NULL default 0.00, PRIMARY KEY (ID)
)ENGINE=MYISAM AUTO_INCREMENT=27 DEFAULT 
CHARSET=latin1;
SET character_set_client=@saved_cs_client;

LOCK TABLES fish WRITE;

INSERT INTO fish VALUES (1,"catfish" , 8.50) , (2,"catfish" , 8.50 ) , (3,  "tuna" ,  8.00 ) , (4,"catfish", 5.00), (5 , "bass" ,6.75 ) , (6,  "haddock" ,  6.50) , (7,"salmon",9.50 ), (8,  "trout" ,  6.00), (9,  "tuna" ,7.50) , (10,"yellowfin tuna" ,12.00), (11,"yellowfin tuna",13.00), (12,"tuna" ,7.50);

UNLOCK TABLES;

然后从文件菜单.sql所在的目录登录到MySQL会话并键入以下内容:

source menu.sql

这将MySQL创建并插入到我们的示例数据库。对于此示例,数据库和程序驻留在同一主机上,因此我们可以使用 localhost。数据库的用户是 skipper 密码为 mysecret 。导入 MySQL for Python 模块后,我们将调用 connect () 函数,如下所示:

mydb=MySQLdb.connect(host="localhost",user="skipper", passwd="mysecret", db="menu")

connect () 函数充当 connections.py 中连接子类的陪衬,并将对象返回到调用进程。因此,在此示例中,将MySQLdb.connect()的值分配给 mydb 会将 mydb 呈现为连接子对象。为了说明这一点,您可以在MySQL中创建必要的数据库,如前所示连接到它,然后在Python shell提示符下键入help(mydb)。然后,您将看到大量与MySQLdb相关的信息。

2、创建游标对象

创建连接对象后,在创建游标对象之前,无法与数据库进行交互。名称光标掩盖了此对象的用途。游标存在于任何生产力应用程序中,并且从一开始就是计算的一部分。光标的目的是标记您的位置并允许您向计算机发出命令。MySQL for Python 中的游标充当 MySQL shell 会话中游标的基于 Python 的代理,如果我们登录到 MySQL 数据库,MySQL 将为我们创建真正的游标。我们必须在这里自己创建代理。

为了创建游标,我们使用我们为连接创建的 MySQLdb.connections 对象的 cursor () 方法。语法如下:

[游标名称]=[连接对象名称].cursor()

使用上面的菜单数据库示例,我们可以对数据库游标使用通用名称游标,并通过以下方式创建它:

cursor=mydb.cursor()

现在,我们已准备好发出命令。

3、与数据库交互

许多SQL命令可以使用单个函数发出,如:cursor.execute()

还有其他方法可以向MySQL发出命令,具体取决于想要返回的结果,但这是最常见的方法之一。

4、关闭连接

在 MySQL 中,您应该通过close the databases或end the session来关闭数据库并结束会话。

为了在 Python 中做到这一点,我们使用数据库对象的 close () 方法。是否直接关闭数据库取决于您执行的操作以及MySQL的自动提交功能是否打开。默认情况下,MySQL已打开自动提交。数据库管理员将能够确认是否打开了自动提交。如果不是,则需要提交所做的任何更改。我们通过调用数据库对象的 commit 方法来执行此操作。对于 mydb,它看起来像这样:

mydb.commit()

提交所有更改后,我们可以关闭数据库:

mydb.close()

多个数据库连接

在MySQL for Python中,所有数据库对象都是离散的。您需要做的就是以不同的名称连接每个。


mydb1=MysQLdb.connect(host="localhost",user="skipper", passwd="mysecret", db="fish")

mydb2=MysQLdb.connect(host="localhost",user="skipper", passwd="mysecret", db="fruit")

cursor1=mydb1.cursor()

cursor2=mydb2.cursor()

然后,这些对象的功能与任何其他变量或对象一样。通过分别调用它们的方法和属性,您可以与其中任何一个进行交互,甚至可以从一个复制到另一个。


文正在参加「技术专题19期 漫谈数据库技术」活动