日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python连数据库课程设计_python 连接操作 各类数据库

發布時間:2024/9/3 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python连数据库课程设计_python 连接操作 各类数据库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:

用Python寫腳本也有一段時間了,經常操作數據庫(MySQL),現在就整理下對各類數據庫的操作,如后面有新的參數會補進來,慢慢完善。

一,python 操作 MySQL:詳情見:這里

mac 安裝:http://sourceforge.net/projects/mysql-python/?source=dlp ?再sudo python setup.py build

【apt-get install python-mysqldb】

【yum install python-devel? &?pip install MySQL-python】

#!/bin/env python#-*- encoding: utf-8 -*-#-------------------------------------------------------------------------------#Purpose: example for python_to_mysql#Author: zhoujy#Created: 2013-06-14#update: 2013-06-14#-------------------------------------------------------------------------------

importMySQLdbimportos#建立和數據庫系統的連接,格式#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 inresult1:printi#返回影響的行數

printcursor.rowcount#獲取指定數量記錄,每條記錄做為一個元組返回,返回1,2,游標從第2條記錄開始,游標指到第4條記錄。

result2 = cursor.fetchmany(2)for i inresult2:for ii ini:printii#獲取所有記錄,每條記錄做為一個元組返回,返回3,4,7,6,游標從第4條記錄開始到最后。

result3 =cursor.fetchall()for i inresult3:for ii ini:printii#獲取所有記錄,每條記錄做為一個元組返回,返回3,4,7,6,游標從第1條記錄開始#重置游標位置,0為偏移量,mode=absolute | relative,默認為relative

cursor.scroll(0,mode='absolute')

result3=cursor.fetchall()for i inresult3:for ii ini:printii#以下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 inresult4:for ii ini:printii

#不定義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 |

+------+---------------------+'''

注意:在腳本中,密碼寫在腳本里面很容易暴露,這樣可以用一個配置文件的方式來存密碼,如db.conf:

[client]

user=root

password=123456

二,python 操作 MongoDB:詳情見這里和這里以及這里

#!/bin/env python#-*- encoding: utf-8 -*-#-------------------------------------------------------------------------------#Purpose: example for python_to_mongodb#Author: zhoujy#Created: 2013-06-14#update: 2013-06-14#-------------------------------------------------------------------------------

importpymongoimportos#建立和數據庫系統的連接,創建Connection時,指定host及port參數

conn = pymongo.Connection(host='127.0.0.1',port=27017)#admin 數據庫有帳號,連接-認證-切換庫

db_auth =conn.admin

db_auth.authenticate('sa','sa')#連接數據庫

db =conn.abc#連接表

collection =db.stu#查看全部表名稱

db.collection_names()#print db.collection_names()

#訪問表的數據,指定列

item = collection.find({},{"sname":1,"course":1,"_id":0})for rows initem:printrows.values()#訪問表的一行數據

print collection.find_one()

#得到所有的列

for rows incollection.find_one():printrows#插入

collection.insert({"sno":100,"sname":"jl","course":{"D":80,"S":85}})#或

u = dict(sno=102,sname='zjjj',course={"D":80,"S":85})

collection.insert(u)#得到行數

printcollection.find().count()print collection.find({"sno":100})#排序,按照某一列的值。pymongo.DESCENDING:倒序;pymongo.ASCENDING:升序。按照sno倒序

item = collection.find().sort('sno',pymongo.DESCENDING)for rows initem:printrows.values()#多列排序

item = collection.find().sort([('sno',pymongo.DESCENDING),('A',pymongo.ASCENDING)])#更新,第一個參數是條件,第二個參數是更新操作,$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:學號;sname:姓名;course:科目

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}})'''

計算Mongodb文檔中各集合的數目:

importpymongo

conn= pymongo.Connection(host='127.0.0.1',port=27017)

db= conn.abc #abc文檔

for tb_name in db.collection_names(): #循環出各集合名

Count = db[tb_name].count() #計算各集合的數量

if Count > 2: #過濾條件

print tb_name + ':' +str(Count)'''conn = pymongo.Connection(host='127.0.0.1',port=27017)

db = conn.abc

for tb_name in db.collection_names():

print tb_name + ':'

exec('print ' + 'db.'+tb_name+'.count()') #變量當集合的處理方式

OR

conn = pymongo.Connection(host='127.0.0.1',port=27017)

db = conn.abc

for tb_name in db.collection_names():

mon_dic=db.command("collStats", tb_name) #以字典形式返回

print mon_dic.get('ns'),mon_dic.get('count')'''

updatetime:2015-06-30

MongoDB升級到了3.0之后,用python的連接會出錯:

pymongo.errors.OperationFailure: command SON([('authenticate', 1), ('user', u'dba'), ('nonce', u'8c7842b068e14d3'), ('key', u'584ec63f1cdfd8525ce33d99cd269c2c')]) failed: auth failed

表示認證失敗,說明MongoDB升級之后,對用用戶的加密方式改變了。那就升級pymongo。

zhoujy@zhoujy:~$ sudo pip install pymongo --upgrade

[sudo] password forzhoujy:

...

...

Successfully installed pymongo

Cleaning up...

ubuntu10.10之后:

$ sudo apt-get install python-pip python-dev build-essential

$ sudo pip install--upgrade pip

$ sudo pip install --upgrade virtualenv

ubuntu10.10之前的老版本:

$ sudo apt-get install python-setuptools python-dev build-essential

$ sudo easy_install pip

$ sudo pip install--upgrade virtualenv

升級成功之后,繼續執行python腳本,還是出錯:

AttributeError: 'module' object has no attribute 'Connection'

表示沒有?Connection ,pymongo升級完之后不支持了,看手冊,發現用MongoClient 來替換了Connection。修改腳本:

conn = pymongo.Connection(host='127.0.0.1',port=27017)

改成

conn= pymongo.MongoClient(host='127.0.0.1',port=27017)

最后執行python,正常。

三,python 操作 Redis:詳情見這里 和 這里/這里;集群連接

#!/bin/env python#-*- encoding: utf-8 -*-#-------------------------------------------------------------------------------#Purpose: example for python_to_mongodb#Author: zhoujy#Created: 2013-06-14#update: 2013-06-14#-------------------------------------------------------------------------------

importredis

f= open('aa.txt')whileTrue:

line= f.readline().strip().split('#')if line == ['']:breakUserName,Pwd,Email=line#print name.strip(),pwd.strip(),email.strip()

rc = redis.StrictRedis(host='127.0.0.1',port=6379,db=15)

rc.hset('Name:' + UserName,'Email',Email)

rc.hset('Name:' + UserName,'Password',Pwd)

f.close()

alluser= rc.keys('*')#print alluser

print "===================================讀出存進去的數據==================================="

for user inalluser:print '#'.join((user.split(':')[1],rc.hget(user,'Password'),rc.hget(user,'Email')))

一個pipeline的請看:

四,python 操作 memcache:詳情見 這里 和 這里

importmemcache

mc = memcache.Client(['127.0.0.1:11211'],debug=1)

#!/usr/bin/env python#coding=utf-8

importMySQLdbimportmemcacheimportsysimporttimedefget_data(mysql_conn):#nn = raw_input("press string name:")

mc = memcache.Client(['127.0.0.1:11211'],debug=1)

t1=time.time()

value= mc.get('zhoujinyia')if value ==None:

t1=time.time()printt1

query= "select company,email,sex,address from uc_user_offline where realName = 'zhoujinyia'"cursor=mysql_conn.cursor()

cursor.execute(query)

item=cursor.fetchone()

t2=time.time()printt2

t= round(t2-t1)print "from mysql cost %s sec" %tprintitem

mc.set('zhoujinyia',item,60)else:

t2=time.time()

t=round(t2-t1)print "from memcache cost %s sec" %tprintvalueif __name__ =='__main__':

mysql_conn= MySQLdb.connect(host='127.0.0.1',user='root',passwd='123456',db='member',port=3306,charset='utf8')

get_data(mysql_conn)

上面介紹了一些python連接數據庫,紅色部分是連接操作的關鍵部分,大部分的操作沒有列出來,具體的請見各官網。

總結

以上是生活随笔為你收集整理的python连数据库课程设计_python 连接操作 各类数据库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。