python连接MySQL、MongoDB、Redis、memcache等数据库的方法

358次阅读  |  发布于6年以前

用Python写脚本也有一段时间了,经常操作数据库(MySQL),现在就整理下对各类数据库的操作,如后面有新的参数会补进来,慢慢完善。

一,python 操作 MySQL:详情见:
【apt-get install python-mysqldb】

复制代码 代码如下:

!/bin/env python

-- encoding: utf-8 --

-------------------------------------------------------------------------------

Purpose: example for python_to_mysql

Author: zhoujy

Created: 2013-06-14

update: 2013-06-14

-------------------------------------------------------------------------------

import MySQLdb
import os

建立和数据库系统的连接,格式

conn = MySQLdb.connect(host='localhost',user='root',passwd='123456',db='test',port=3306,charset='utf8')

指定配置文件,确定目录,或则写绝对路径

cwd = os.path.realpath(os.path.dirname(file))
db_conf = os.path.join(cwd, 'db.conf')
conn = MySQLdb.connect(read_default_file=db_conf,host='localhost',db='test',port=3306,charset='utf8')

要执行的sql语句

query = 'select id from t1'

获取操作游标

cursor = conn.cursor()

执行SQL

cursor.execute(query)

获取一条记录,每条记录做为一个元组返回,返回3,游标指到第2条记录。

result1 = cursor.fetchone()
for i in result1:
print i

返回影响的行数

print cursor.rowcount

获取指定数量记录,每条记录做为一个元组返回,返回1,2,游标从第2条记录开始,游标指到第4条记录。

result2 = cursor.fetchmany(2)
for i in result2:
for ii in i:
print ii

获取所有记录,每条记录做为一个元组返回,返回3,4,7,6,游标从第4条记录开始到最后。

result3 = cursor.fetchall()
for i in result3:
for ii in i:
print ii

获取所有记录,每条记录做为一个元组返回,返回3,4,7,6,游标从第1条记录开始

重置游标位置,0为偏移量,mode=absolute | relative,默认为relative

cursor.scroll(0,mode='absolute')
result3 = cursor.fetchall()
for i in result3:
for ii in i:
print ii

以下2种方法都可以把数据插入数据库:

(one)

for i in range (10,20):
query2 = 'insert into t1 values("%d",now())' %i
cursor.execute(query2)

提交

conn.rollback()  

(two)

rows = []
for i in range (10,20):
rows.append(i)
query2 = 'insert into t1 values("%s",now())'

executemany 2个参数,第2个参数是变量。

cursor.executemany(query2,rows)

提交

conn.commit()

选择数据库

query3 = 'select id from dba_hospital'

重新选择数据库

conn.select_db('chushihua')

cursor.execute(query3)

result4 = cursor.fetchall()
for i in result4:
for ii in i:
print ii

不定义query,直接执行:

cursor.execute("set session binlog_format='mixed'")

关闭游标,释放资源

cursor.close()

'''
+------+---------------------+
| id | modifyT |
+------+---------------------+
| 3 | 2010-01-01 00:00:00 |
| 1 | 2010-01-01 00:00:00 |
| 2 | 2010-01-01 00:00:00 |
| 3 | 2010-01-01 00:00:00 |
| 4 | 2013-06-04 17:04:54 |
| 7 | 2013-06-04 17:05:36 |
| 6 | 2013-06-04 17:05:17 |
+------+---------------------+

'''

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8