http://www.cnblogs.com/ceniy/archive/2010/08/31/1814066.html
1.确认 已经安装了 MySQLdb module
Python 1.5.2 (#1, Feb 1 2000, 16:32:16) [GCC egcs-2.91.66
19990314/Linux
(egcs- on linux-i386
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import MySQLdb
Traceback (innermost last):
File "<stdin>", line 1, in ?
ImportError: No module named MySQLdb
>>>
这样的消息说明没有安装MySQLdb, 从http://sourceforge.net/projects/mysql-python下载安装。
$ tar -xzvf MySQL-python-0.9.2.tar.gz
$ cd MySQL-python-0.9.2
$ python setup.py build
$ python setup.py install
再检查:
Python 1.5.2 (#1, Feb 1 2000, 16:32:16) [GCC egcs-2.91.66
19990314/Linux
(egcs- on linux-i386
Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam
>>> import MySQLdb
>>>
然后我们用以下这个数据表:
mysql> SELECT * FROM animals;
+---------+----------+
| name | species |
+---------+----------+
| Wallace | Walrus |
| Polly | Parrot |
| Freddie | Frog |
| Tusker | Elephant |
| Sammy | Skunk |
+---------+----------+
5 rows in set (0.01 sec)
然后用这个短小的python 代码,检索并打印出每条记录
#!/usr/bin/python
# import MySQL module
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# execute SQL statement
cursor.execute("SELECT * FROM animals")
# get the resultset as a tuple
result = cursor.fetchall()
# iterate through resultset
for record in result:
print record[0] , "-->", record[1]
然后我们一步一步认识下这个过程,先是 python 导入 MySQLdb module
# import MySQL module
import MySQLdb
之后打开一个数据库连接,需要参数 服务器,用户名,密码,数据库名
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
成功连接后可以得到一个db对象,可以生成游标
# create a cursor
cursor = db.cursor()
这个游标用于执行SQL,并返回得到的结果
# execute SQL statement
cursor.execute("SELECT * FROM animals")
# get the resultset as a tuple
result = cursor.fetchall()
有很多种方法去获得这个SQL 结果,这里使用的是fetchall(),他会返回一个元祖集,它里面的每一个元祖表示一行数据,可以用for进行循环显示每一个数据。
# iterate through resultset
for record in result:
print record[0] , "-->", record[1]
也可以用fetchone()每次去获取一条数据,看下面的例子:
#!/usr/bin/python
# import MySQL module
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# execute SQL statement
cursor.execute("SELECT * FROM animals")
# get the number of rows in the resultset
numrows = int(cursor.rowcount)
# get and display one row at a time
for x in range(0,numrows):
row = cursor.fetchone()
print row[0], "-->", row[1]
这里,我们先用游标的rowcount ()方法去获取结果集的条数。然后用在for循环中,去用fetchone()方法去获取每行数据。
我们还可以用fetchmany()方法去指定获取的条数。
#!/usr/bin/python
# import MySQL module
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# execute SQL statement
cursor.execute("SELECT * FROM animals")
# limit the resultset to 3 items
result = cursor.fetchmany(3)
# iterate through resultset
for record in result:
print record[0] , "-->", record[1]
很明显的,你可以执行 插入,更新 和 删除通过 MySQLdb module
#!/usr/bin/python
# import MySQL module
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# execute SQL statement
cursor.execute("""INSERT INTO animals (name, species) VALUES ("Harry",
"Hamster")""")
修改一下,我们让用户输入信息,保存到数据库
#!/usr/bin/python
# import MySQL module
import MySQLdb
# get user input
name = raw_input("Please enter a name: ")
species = raw_input("Please enter a species: ")
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# execute SQL statement
cursor.execute("INSERT INTO animals (name, species) VALUES (%s, %s)",
(name, species))
这次运行的时候,你需要输入信息:
Please enter a name: Rollo
Please enter a species: Rat
注意%s位置 会被 (name,species)元组的值 替换。
如果你有自动增长的字段,你可以使用insert_id()去获取最后一条插入的数据的ID。
#!/usr/bin/python
# import MySQL module
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# execute SQL statement
cursor.execute("""INSERT INTO test (field1, field2) VALUES ("val1",
"val2")""")
# get ID of last inserted record
print "ID of inserted record is ", int(cursor.insert_id())
许多数据库脚本涉及到多次的数据操作(比如插入),每次插入大量的不同的值,MySQLdb有一个executemany()方法,可以简化这种操作。
看下面的例子:
#!/usr/bin/python
# import SQL module
import MySQLdb
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# dynamically generate SQL statements from list
cursor.executemany("INSERT INTO animals (name, species) VALUES (%s,
%s)", [ ('Rollo', 'Rat'), ('Dudley', 'Dolphin'), ('Mark', 'Marmoset')
])
这里,同样的操作被执行了很多遍(不同的值),通过传递给executemany()一个Python list,每个元素是一个元组。
用这种方式,我们可以让用户一次输入大量的数据,然后一次性保存。
#!/usr/bin/python
# import MySQL module
import MySQLdb
# initialize some variables
name = ""
data = []
# loop and ask for user input
while (1):
name = raw_input("Please enter a name (EOF to end): ")
if name == "EOF":
break
species = raw_input("Please enter a species: ")
# put user input into a tuple
tuple = (name, species)
# and append to data[] list
data.append(tuple)
# connect
db = MySQLdb.connect(host="localhost", user="joe", passwd="secret",
db="db56a")
# create a cursor
cursor = db.cursor()
# dynamically generate SQL statements from data[] list
cursor.executemany("INSERT INTO animals (name, species) VALUES (%s,
%s)",
data)
这里我们用while 循环让用户输入信息,保存到values 列表,当用户输入完成的时候,执行executemany()
MySQLdb 类还有很多其他有用的方法 :
connection.begin() - 开始一个事务
connection.apilevel() - returns the current DB APIlevel
connection.conv() - set type conversion options between MySQL and Python
connection.commit() - commit a transaction
connection.rollback() - roll back a transaction
有用的链接:
The MySQLdb project page on SourceForge, athttp://sourceforge.net/projects/mysql-python
The Python home page, at http://www.python.org/
The MySQL home page, at http://www.mysql.com/
Note: All examples in this article have been tested on Linux/i586 with Python 1.5.2, MySQL 3.23 and MySQLdb 0.9.2. Examples are illustrative only, and are not meant for a production environment. Melonfire provides no warranties or support for the source code described in this article. YMMV!
分享到:
相关推荐
在这个特定的“数据库设计报告模板 mysql”中,我们看到一系列的表格及其功能说明,这表明该数据库可能是用于某种业务应用,如管理用户、交易、产品信息等。 首先,我们分析一下提供的表格列表: 1. By_bq、By_...
1. ODBC驱动的安装和配置:在使用DataFactory与MySQL数据库交互时,需要安装MySQL的ODBC驱动程序。在文档中提到了MySQL ODBC驱动的下载链接以及如何安装MySQL ODBC 5.2.6版本的Windows版本驱动。 2. 数据库连接测试...
4. **数据库操作**:在实际的代码实现中,学生可能需要用编程语言(如Python、Java或C#)与数据库交互,使用各种API或ORM(对象关系映射)框架来执行SQL语句。 5. **事务处理**:数据库操作往往涉及到事务,确保...
斑马打印机ZT411和ZT421是工业级条码和标签打印机,广泛应用于制造业、物流、零售业等对打印质量和效率有高要求的领域。这两款打印机以其出色的性能、耐用性和易用性赢得了用户的信赖。这份中文手册详细地介绍了ZT...
《ZT213/ZT213LEEA:低功耗RS232多通道USB收发器/驱动器芯片详解》 ZT213/ZT213LEEA是一款专为低功耗应用设计的RS232多通道USB收发器和驱动器芯片,广泛应用于数据通信、工业控制、物联网设备等领域。本文将深入...
此外,通过软件配合,还可以实现动态数据打印,即每次打印的内容可以依据数据库实时更新。 6. **兼容性与稳定性** - Zebra的驱动程序通常兼容各种操作系统,包括Windows、Mac OS和Linux,确保在不同平台上的稳定...
ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机
- **zt_storySpec**: 与zt_story紧密关联,记录了每个需求的具体规格或细节信息。 通过这两个表,项目团队能够更好地管理需求变更,并确保所有相关方都对需求有清晰的认识。 ##### 4. zt_release - 发布表 该表...
ZT7548是一款第五代电容式触控屏幕控制器,支持30x18或18x30的通道配置,可以同时检测最多10个触点。该控制器能够与最多8个键与TSP(触控屏面板)或FPC(柔性印刷电路板)模式一起工作,在多点触控时无扫描率下降的...
斑马(Zebra)ZT410是一款先进的桌面级条码打印机,被广泛应用于物流、零售、医疗、制造业等多个行业。这款打印机以其高效、耐用和易于操作的特点深受用户喜爱。"斑马zt410中文库"指的是为ZT410打印机特别设计的中文...
"斑马打印机ZT210用户指南" 本用户指南旨在为Zebra ZT210/ZT220/ZT230打印机的用户提供操作和维护指南,该设备是一种工业级的条码打印机,具有高速打印、高速处理和高质量打印输出等特点。 版权信息 本手册的版权...
斑马打印机ZT210是一款专业的工业级条形码和标签打印机,广泛应用于物流、零售、医疗等行业的标签制作。以下是对如何设置和使用斑马ZT210打印机的详细步骤: 首先,我们需要安装电脑驱动。双击下载好的驱动程序文件...
禅道数据库表结构分享.pdf 禅道数据库表结构分享.pdf是一份关于禅道数据库表结构的分享文档,其中包含了多个SQL查询语句,用于查询禅道数据库中的数据。下面我们将对文档中的知识点进行详细的解释和分析。 首先,...
RS485通信芯片ZT13085E是一种常用的工业级串行通信接口芯片,主要用于构建远程、多节点的通信网络。在工业自动化、楼宇自动化、物联网设备等领域有广泛应用。ZT13085E的设计目标是提供一种高效、可靠的数据传输方式...
斑马ZT510打印机驱动文件
基于flask和echarts的中国疫情数据大屏可视化项目 ... python:requests flask 实现流程: ...后端部分设计 utils.py 与数据库交互 flask的基本运用:static文件夹放css和js文件,templates文件夹下放
【SQL数据库 客房管理】是一个关于使用数据库技术进行客房管理的应用示例,它涵盖了数据库中的数据操作、存储过程和函数等核心概念。通过这样的管理系统,可以高效地处理入住、退房以及计算营业额等业务流程。 1. *...
赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:zt-exec-1.9-javadoc-API文档-...
该项目利用了基于springboot + vue + mysql的开发...Java、Python、Node.js、Spring Boot、Django、Express、MySQL、PostgreSQL、MongoDB、React、Angular、Vue、Bootstrap、Material-UI、Redis、Docker、Kubernetes