Python 数据库连接,python连接数据库的基本步骤是什么
摘要:
用计算机编程语言写脚本也有一段时间了,经常操作数据库(MySQL),现在就整理下对各类数据库的操作,如后面有新的参数会补进来,慢慢完善。
一,python操作MySQL:详情见:这里
老兄安装:http://sourceforge.net/projects/mysql-python/?source=dlp再sudo python setup.py构建
【apt-get安装python-mysqldb】
【百胜安装python-devel pip安装MySQL-python】
【百胜安装python-devel mysql-devel pip安装mysql-python】
#!/bin/env python
# -*-编码:utf-8 -*-
# -
#目的:python_to_mysql示例
#作者:周教育行业标准
#创建时间:2013-06-14
#更新时间:2013-06-14
# -
导入转载
导入操作系统
#建立和数据库系统的连接,格式
# conn=mysqldb。connect(host= localhost ,user=root ,passwd=123456 ,db=test ,port=3306,charset=utf8 )
#指定配置文件,确定目录,或则写绝对路径
CWD=OS。路径。真实路径(OS。路径。目录名(_ _文件_ _))
db_conf=os.path.join(cwd, db.conf )
conn=mysqldb。connect(read _ default _ file=db _ conf,host=localhost ,db=test ,port=3306,charset=utf8 )
#要执行的结构化查询语言语句
查询=从T1级(一种通讯线路的名称)中选择id
#获取操作游标
cursor=conn.cursor()
#执行结构化查询语言
游标。执行(查询)
#获取一条记录,每条记录做为一个元组返回,返回3,游标指到第2条记录。
result1=cursor.fetchone()
对于结果一中的我:
打印我
#返回影响的行数
打印光标。行数
#获取指定数量记录,每条记录做为一个元组返回,返回1,2,游标从第2条记录开始,游标指到第四条记录。
result2=cursor.fetchmany(2)
对于结果2中的我:
对于我中的二:
打印二
#获取所有记录,每条记录做为一个元组返回,返回3,4,7,6,游标从第四条记录开始到最后。
result3=cursor.fetchall()
对于结果3中的我:
对于我中的二:
打印二
#获取所有记录,每条记录做为一个元组返回,返回3,4,7,6,游标从第一条记录开始
#重置游标位置,0为偏移量,模式=绝对相对,默认为亲戚
cursor.scroll(0,mode=absolute )
result3=cursor.fetchall()
对于结果3中的我:
对于我中的二:
打印二
#以下2种方法都可以把数据插入数据库:
#(一个)
对于范围内的我(10,20):
query2=insert into t1 values(%d ,now()) %i
游标. execute(查询2)
#提交
conn.rollback()
#(两个)
行数=[]
对于范围内的我(10,20):
rows.append(i)
query2=insert into t1 values(%s ,now())
#执行许多2个参数,第2个参数是变量。
cursor.executemany(查询2,行)
#提交
conn.commit()
#选择数据库
查询3=从dba _医院中选择id
#重新选择数据库
conn.select_db(初十化)
游标. execute(查询3)
result4=cursor.fetchall()
对于结果四中的我:
对于我中的二:
打印二
#不定义查询,直接执行:
光标。execute( set session binlog _ format= mixed )
#关闭游标,释放资源
cursor.close()
- -
id 修改日期
- -
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
- -
注意:在脚本中,密码写在脚本里面很容易暴露,这样可以用一个配置文件的方式来存密码,如数据库会议:
[客户]
用户=根
密码=123456二,python操作MongoDB:详情见这里和这里以及这里
#!/bin/env python
# -*-编码:utf-8 -*-
# -
#目的:python_to_mongodb示例
#作者:周教育行业标准
#创建时间:2013-06-14
#更新时间:2013-06-14
# -
导入安装
导入操作系统
#建立和数据库系统的连接,创建关系时,指定宿主及港口参数
conn=pymongo .连接(主机=127.0.0.1 ,端口=27017)
#管理员数据库有帐号,连接-认证-切换库
db_auth=conn.admin
db_auth.authenticate(sa , sa )
#连接数据库
db=conn.abc
#连接表
集合=db.stu
#查看全部表名称
数据库集合名称()
#打印数据库集合名称()
#访问表的数据,指定列
item=collection.find({},{sname:1, course:1, _id:0})
对于项目中的行:
打印rows.values()
#访问表的一行数据
print collection.find_one()
#得到所有的列
对于collection.find_one()中的行:
打印行
#插入
collection.insert({sno:100, sname:jl , course:{D:80, S:85}})
#或
u=dict(sno=102,sname=zjjj ,course={D:80, S:85})
收集。插入(u)
#得到行数
打印collection.find()。计数()
打印收藏。查找({ SnO :100 })
#排序,按照某一列的值皮蒙戈.降序:倒序;皮蒙戈。升序:升序。按照学号倒序
item=collection.find().sort(sno ,pymongo .降序)
对于项目中的行:
打印rows.values()
#多列排序
item=collection.find().排序([(sno ,pymongo .降序),( A ,pymongo .升序)])
#更新,第一个参数是条件,第二个参数是更新操作,$set,%inc,$push,$ne,$addToSet,$rename等
collection.update({sno:100},{$set:{sno:101}})
#更新多行和多列
collection.update({sno:102},{$set:{sno:105, sname:SSSS}},multi=True)
#删除,第一个参数是条件,第二个参数是删除操作。
collection.remove({sno:101})
sno:学号;名称:姓名;课程:科目
db.stu.insert({sno:1, sname :张三, course:{A:95, B:90, C:65, D:74, E:100}})
db.stu.insert({sno:2, sname :李四, course:{A:90, B:85, X:75, Y:64, Z:95}})
db.stu.insert({sno:3, sname :赵五、 course:{A:70, B:56, F:85, G:84, H:80}})
db.stu.insert({sno:4, sname:zhoujy , course:{A:64, B:60, C:95, T:94, Y:85}})
db.stu.insert({sno:5, sname:abc , course:{A:87, B:70, Z:56, G:54, H:75}})
db.stu.insert({sno:6, sname :杨六, course:{A:65, U:80, C:78, R:75, N:90}})
db.stu.insert({sno:7, sname :陈二, course:{A:95, M:68, N:84, S:79, K:89}})
db.stu.insert({sno:8, sname:zhoujj , course:{P:90, B:77, J:85, K:68, L:80}})
db.stu.insert({sno:9, sname:ccc , course:{Q:85, B:86, C:90, V:87, U:85}})
计算数据库文档中各集合的数目:
导入安装
conn=pymongo .连接(主机=127.0.0.1 ,端口=27017)
db=conn.abc #abc文档
对于数据库集合名称()中的tb _ name循环出各集合名
Count=db[tb_name].count() #计算各集合的数量
如果计数为2: #过滤条件
打印tb_name :字符串(计数)
conn=pymongo .连接(主机=127.0.0.1 ,端口=27017)
db=conn.abc
对于数据库集合名称()中的tb_name:
打印tb_name :
exec(print db tb_name ).count()) #变量当集合的处理方式
运筹学
conn=pymongo .连接(主机=127.0.0.1 ,端口=27017)
db=conn.abc
对于数据库集合名称()中的tb_name:
mon_dic=db.command(collStats ,tb_name) #以字典形式返回
打印mon_dic.get(ns ),mon_dic.get(count )
更新时间:2015-06-30
MongoDB升级到了3.0之后,用大蟒的连接会出错:
py mongo。错误。操作失败:命令SON([(authenticate ,1),( user ,udba ),( nonce ,u8c7842b068e14d3 ),( key ,u 584 EC 63 f1 cdfd 8525 ce 33d 99 CD 269 c 2c ))失败:auth失败表示认证失败,说明MongoDB升级之后,对用用户的加密方式改变了。那就升级皮蒙戈。
zhoujy@zhoujy:~$ sudo pip安装皮蒙戈-升级
[须藤]周的密码:
.
.
成功安装安装
清理.升级成功,要是没有安装皮普,看这里:http://www。咸鹤。com/blog/2010/02/how-install-pip-Ubuntu/
ubuntu10.10之后:
$ sudo apt-get安装python-pip python-dev构建-基本
$ sudo pip安装-升级点
$ sudo pip安装-升级virtualenvubuntu10.10之前的老版本:
$ sudo apt-get安装python-设置工具python-dev build-essential
$ sudo easy_install pip
$ sudo pip安装-升级虚拟环境升级成功之后,继续执行大蟒脚本,还是出错:
属性错误:"模块"对象没有属性"连接"表示没有连接,皮蒙戈升级完之后不支持了,看手册,发现用MongoClient来替换了联系。修改脚本:
conn=pymongo .连接(主机=127.0.0.1 ,端口=27017)
改成
conn=pymongo .MongoClient(主机=127.0.0.1 ,端口=27017)最后执行python,正常。
三,python操作Redis:详情见这里和这里/这里;集群连接
#!/bin/env python
# -*-编码:utf-8 -*-
# -
#目的:python_to_mongodb示例
#作者:周教育行业标准
#创建时间:2013-06-14
#更新时间:2013-06-14
# -
导入存储
f=打开( aa.txt )
虽然正确:
line=f.readline().剥离()。拆分( # )
if line==[]:
破裂
用户名、密码、电子邮件=行
# print name.strip()、pwd.strip()、email.strip()
rc=redis .StrictRedis(主机=127.0.0.1 ,端口=6379,数据库=15)
rc.hset(名称:用户名,电子邮件,电子邮件)
rc.hset(名称:用户名,密码,密码)
f.close()
alluser=rc.keys(* )
#打印所有用户
打印===============================读出存进去的数据===================================
对于存放所有用户信息中的用户:
打印"#"。join((user.split(:)[1],rc.hget(用户,密码),rc.hget(用户,电子邮件))一个管道的请看:这里
四,python操作内存缓存:详情见这里和这里
导入内存缓存
mc=memcache .客户端([127.0.0.1:11211],debug=1)#!/usr/bin/env python
#编码=utf-8
导入转载
导入内存缓存
导入系统
导入时间
def get_data(mysql_conn):
# nn=原始输入(按字符串名称:)
mc=memcache .客户端([127.0.0.1:11211],debug=1)
t1=time.time()
值=MC。得到(《周金芽》)
如果值==无:
t1=time.time()
打印T1级(一种通讯线路的名称)
query=select company,email,sex,address from UC _ user _ offline where real name= zhoujinyia
cursor=mysql_conn.cursor()
游标。执行(查询)
item=cursor.fetchone()
t2=time.time()
打印t2
t=圆形(t2-t1)
从关系型数据库打印成本%s秒%t
打印项目
mc.set(《周金鸭》,第60项)
否则:
t2=time.time()
t=圆形(t2-t1)
从内存缓存打印成本%s秒%t
打印值
if __name__==__main__ :
MySQL _ conn=mysqldb。连接(host= 127。0 .0 .1 ,用户=root ,密码=123456 ,数据库=成员,端口=3306,字符集=utf8 )
获取数据(mysql_conn)上面介绍了一些大蟒连接数据库,红色部分是连接操作的关键部分,大部分的操作没有列出来,具体的请见各官网。
~~~~~~~~~~~~~~~
万物之中,希望至美
~~~~~~~~~~~~~~~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。