ython标准的数据库接口的Python DB-API。大多数Python数据库接口坚持这个标准。.
你可以选择适合您应用的数据库。 Python数据库API支持范围广泛的数据库服务器:
下面是可用的Python数据库接口的列表:
Python Database Interfaces and APIs
你必须下载一个单独的DB API的模块,你需要访问的每个数据库。例如,如果你需要访问Oracle数据库以及MySQL数据库,你必须下载Oracle和MySQL数据库模块.
DB API提供了与数据库的工作,尽可能使用Python的结构和语法的最低标准。这个API包括以下:
导入API模块.
获取与数据库的连接.
发出SQL语句和存储过程.
关闭连接
我们这里将仅学习使用MySQL的所有概念,所以让我们来谈谈MySQLdb模块.
什么是MySQLdb?
MySQLdb的是一个接口连接到MySQL数据库服务器从Python。它实现了Python数据库API V2.0,并建上的MySQL C API的顶端.
我怎么安装MySQLdb?
在进行之前,您确认您已经MySQLdb的机器上安装。只是在你的Python脚本键入以下命令并执行它:
#!/usr/bin/pythonimport MySQLdb
如果它产生以下结果,那么它意味着未安装MySQLdb模块:
Traceback (most recent call last): File "test.py", line 3, inimport MySQLdbImportError: No module named MySQLdb
安装MySQLdb模块,MySQLdb的下载页面下载并进行如下,
window平台可以到下载:
$ gunzip MySQL-python-1.2.2.tar.gz$ tar -xvf MySQL-python-1.2.2.tar$ cd MySQL-python-1.2.2$ python setup.py build$ python setup.py install
注:确保你有root权限来安装上述模块.
数据库连接:
连接到一个MySQL数据库之前确保以下:
你已经创建了一个数据库TESTDB.
你已经创建了一个EMPLOYEE表在TESTDB中.
EMPLOYEE表有以下几个字段:FIRST_NAME, LAST_NAME, AGE, SEX and INCOME.
“testuser的”用户ID和密码“test123”设置用来访问TESTDB。
Python模块MySQLdb在你的机器上正确安装.
你已通过MySQL的教程,了解MySQL基础
例子:
以下是连接MySQL数据库“TESTDB”例子
#!/usr/bin/pythonimport MySQLdb# Open database connectiondb = MySQLdb.connect("localhost","testuser","test123","TESTDB" )# prepare a cursor object using cursor() methodcursor = db.cursor()# execute SQL query using execute() method.cursor.execute("SELECT VERSION()")# Fetch a single row using fetchone() method.data = cursor.fetchone()print "Database version : %s " % data# disconnect from serverdb.close()
而在我的Linux机器运行此脚本,其产生的结果如下.
Database version : 5.0.45
如果连接建立的数据源,然后返回一个Connection对象,并保存成数据库,为进一步利用,否则DB设置为None。下一步db对象是用来创建一个游标对象,而这又是用来执行SQL查询.
最后出来之前,它确保数据库连接被关闭,资源被释放.
创建数据库表:
一旦建立一个数据库连接,我们已经准备好创建表或记录到数据库中使用表创建的游标的执行方法.
例子:
首先,让我们创建数据库表Employee:
#!/usr/bin/pythonimport MySQLdb# Open database connectiondb = MySQLdb.connect("localhost","testuser","test123","TESTDB" )# prepare a cursor object using cursor() methodcursor = db.cursor()# Drop table if it already exist using execute() method.cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# Create table as per requirementsql = """CREATE TABLE EMPLOYEE (FIRST_NAME CHAR(20) NOT NULL,LAST_NAME CHAR(20),AGE INT,SEX CHAR(1),INCOME FLOAT )"""cursor.execute(sql)# disconnect from serverdb.close()插入操作:
INSERT操作时,需要你想创建一个数据库表记录.
例子:
以下是执行SQL INSERT语句创建一个记录到EMPLOYEE表的例子.
#!/usr/bin/pythonimport MySQLdb# Open database connectiondb = MySQLdb.connect("localhost","testuser","test123","TESTDB" )# prepare a cursor object using cursor() methodcursor = db.cursor()# Prepare SQL query to INSERT a record into the database.sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME)VALUES (‘Mac’, ‘Mohan’, 20, ‘M’, 2000)"""try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit()except: # Rollback in case there is any error db.rollback()# disconnect from serverdb.close()
上面的例子可以写成如下动态创建SQL查询:
#!/usr/bin/pythonimport MySQLdb# Open database connectiondb = MySQLdb.connect("localhost","testuser","test123","TESTDB" )# prepare a cursor object using cursor() methodcursor = db.cursor()# Prepare SQL query to INSERT a record into the database.sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \LAST_NAME, AGE, SEX, INCOME) \VALUES (‘%s’, ‘%s’, ‘%d’, ‘%c’, ‘%d’ )" % \(‘Mac’, ‘Mohan’, 20, ‘M’, 2000)try: # Execute the SQL command cursor.execute(sql) # Commit your changes in the database db.commit()except: # Rollback in case there is any error db.rollback()# disconnect from serverdb.close()例子:
下面的代码段是另一种形式执行,在那里你可以直接传递参数:
…………………………….user_id = "test123"password = "password"con.execute(‘insert into Login values("%s", "%s")’ % \(user_id, password))…………………………….读取操作:
任何databasse读取运作手段从数据库中获取一些有用的信息.
我们的数据库建立连接后,我们准备进入这个数据库查询。我们可以使用fetchone()方法来获取单个记录或者fetchAll方法fetech从数据库表的多个值.
fetchone():这种方法获取查询结果集的下一行。结果集是一个对象时,将返回一个游标对象用于查询表.
fetchall():这种方法获取结果集的所有行。如果某些行已经从结果集中提取,fetchAll()方法检索结果集的其余行.
rowcount:这是一个只读属性,返回受影响的行数execute()方法.
例子:都可以…孔子的,老子的. 孙子的…都可以