Linux下利用 Python连接mysql数据库一个很好的例子

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 原文转载自:http://my.oschina.net/davehe/blog/128361 1 安装Python的Mysql包 root@10.

原文转载自:http://my.oschina.net/davehe/blog/128361


1 安装Python的Mysql包

root@10.1.1.45:~# apt-get install python-mysqldb
root@10.1.1.45:~# python
Python 2.5.2 (r252:60911, Jan  4 2009, 21:59:32) 
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>>

  这里导入MySQLdb没有报错,就说明安装成功.


2 下面就可以连接数据库,可以进行增删改操作.

root@10.1.1.45:python# cat create.py 
#!/usr/bin/env python
#coding=utf-8

#导入相关模块
import MySQLdb

#建立和mysql数据库的连接
conn = MySQLdb.connect(host='localhost',user='root',passwd='davehe')
#获取游标
curs = conn.cursor()
#执行SQL,创建一个数据库
curs.execute("create database pythondb")
#选择连接哪个数据库
conn.select_db('pythondb')
#执行SQL,创建一个表
curs.execute("create table test(id int,message varchar(50))")
#插入一条记录
value = [1,"davehe"]
curs.execute("insert into test values(%s,%s)",value)
#插入多条记录
values = []
for i in range(20):
    values.append((i,'hello mysqldb' + str(i)))
curs.executemany("insert into test values(%s,%s)",values)
#提交修改                               
conn.commit()
#关闭游标连接,释放资源
curs.close()
#关闭连接
conn.close()
root@10.1.1.45:python# ./create.py


3 下面利用python查看mysql里刚添加的记录.

root@10.1.1.45:python# cat select.py 
#!/usr/bin/env python
#coding=utf-8

#导入相关模块
import MySQLdb

#建立和mysql数据库的连接
conn = MySQLdb.connect(host='localhost',user='root',passwd='hc1226')
#获取游标
curs = conn.cursor()
#选择连接哪个数据库
conn.select_db('pythondb')
#查看共有多少条记录
count = curs.execute('select * from test')
print "一共有%s条记录" % count
#获取一条记录,以一个元组返回
result = curs.fetchone()
print "当前的一条记录 ID:%s message:%s" % result
#获取后10条记录,由于之前执行了getchone(),所以游标已经指到第二条记录,下面也就从第二条记录开始返回
results = curs.fetchmany(10)
for r in results:
    print r
#重置游标位置,0,为偏移量,mode = relative(默认)
curs.scroll(0,mode='absolute')
#获取所有记录
results = curs.fetchall()
for r in results:
    print r

#提交修改
conn.commit()
#关闭游标连接,释放资源
curs.close()
#关闭连接
conn.close()

root@10.1.1.45:python# ./select.py 
一共有21条记录
当前的一条记录 ID:1 message:davehe
(0L, 'hello mysqldb0')
(1L, 'hello mysqldb1')
(2L, 'hello mysqldb2')
(3L, 'hello mysqldb3')
(4L, 'hello mysqldb4')
(5L, 'hello mysqldb5')
(6L, 'hello mysqldb6')
(7L, 'hello mysqldb7')
(8L, 'hello mysqldb8')
(9L, 'hello mysqldb9')
(1L, 'davehe')
(0L, 'hello mysqldb0')
(1L, 'hello mysqldb1')
(2L, 'hello mysqldb2')
(3L, 'hello mysqldb3')
(4L, 'hello mysqldb4')
(5L, 'hello mysqldb5')
(6L, 'hello mysqldb6')
(7L, 'hello mysqldb7')
(8L, 'hello mysqldb8')
(9L, 'hello mysqldb9')
(10L, 'hello mysqldb10')
(11L, 'hello mysqldb11')
(12L, 'hello mysqldb12')
(13L, 'hello mysqldb13')
(14L, 'hello mysqldb14')
(15L, 'hello mysqldb15')
(16L, 'hello mysqldb16')
(17L, 'hello mysqldb17')
(18L, 'hello mysqldb18')
(19L, 'hello mysqldb19')


4 附录

   1 connect函数的常用参数

   user             #用户名

   password     #用户密码 

   host             #主机名

   database     #数据库名


    2 connect函数会返回连接对象,连接对象方法

    close()        #关闭连接之后,连接对象和它的游标均不可用

    commit()     #如果支持的话就提交挂起的事务,否则不做任何事

    rollback()    #回滚挂起的事务(可能不可用)

    cursor()      #返回连接的游标对象


    3 游标对象方法

    close()                               #关闭游标

    execute(oper[,params])     #执行SQL操作,可能使用参数

    executemany(oper,pseq)   #对序列中的每个参数执行SQL操作

    fetchone()                         #把查询的结果集中的下一行保存为序列,或者None

    fetchmany([size])              #获取查询结果集中的多行,默认为1

    fetchall()                           #将所有(剩余)的行作为序列的序列




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
4天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
31 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
4天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
25 6
|
4天前
|
网络协议 安全 Linux
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
IDEA通过内网穿透实现固定公网地址远程SSH连接本地Linux服务器
|
6天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
7天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
20 0
|
8天前
|
SQL 关系型数据库 MySQL
DQL语言之连接查询(mysql)
DQL语言之连接查询(mysql)
|
10天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
11天前
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL 安装及连接
MySQL 安装及连接
31 0
|
14天前
|
负载均衡 Java 关系型数据库
linux 下amoeba实现数据库的负载均衡
linux 下amoeba实现数据库的负载均衡
9 1