使用 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期 漫谈数据库技术」活动