Python を MySQL、MongoDB、Redis、memcache、その他のデータベースに接続する方法
私は以前から Python でスクリプトを書いていて、データベース (MySQL) を操作することが多いので、後で新しいパラメーターがあれば追加して改善していきます。
1. Python 操作 MySQL: 詳細については、
[apt-get install python-mysqldb]
#!/bin/env python
# -*- エンコーディング: utf- 8 -*-
#-------------------------------------- ------ -------------------------------------
# 目的: 例for python_to_mysql
# 作成者: zhoujy
# 作成日: 2013-06-14
# 更新日: 2013-06-14
#--------------- ------ -------------------------------------------- ------ --------
MySQLdb をインポート
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
#影響を受ける行数を返す
printcursor.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 を返します。カーソルは最初のレコードから始まります。
#カーソル位置をリセットします。0 はオフセットです。モード =absoluterelative | 、デフォルトは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 names(" %d" ,now())' %i
cursor.execute(query2)
#Submit
conn.rollback()
#(two)
行 = []
for i in range (10,20):
rows.append(i)
query2 = 't1 値に挿入 ("%s",now())'
#executemany 2 パラメーター、2 番目パラメータは変数です。
cursor.executemany(query2,rows)
#Submit
conn.commit()
#データベースを選択
query3 = 'dba_hospitalからIDを選択'
#データベースを再選択
conn.select_db('chushihua')
cursor.execute(query3)
result4 =cursor.fetchall()
for i in result4:
for ii in i:
print ii
#クエリを定義せず、直接実行します:
cursor.execute( " set session binlog_format='mixed'")
#カーソルを閉じてリソースを解放します
cursor.close()
'''
+-----+---------------------+
| id |
+------+----------+
| 2010-01-01 00:00:00 |
| 1 | 2010-01-01 00:00:00 |
2010-01-01 00:00:00 >| 4 | 2013-06-04 17:04:54 |
| 2013-06-04 17:05:17 | 🎜>+------+----------+
'''
注: スクリプト内にパスワードを記述すると、db.conf:
などの構成ファイルを使用してパスワードを保存できます。
2 つ、
Python 操作 MongoDB:
コードをコピー
#!/bin/env python
# -*- エンコーディング: utf-8 -*-
#------ -------------------------------------------------- -----------
# 目的: python_to_mongodb の例
# 著者: zhoujy
# 作成日: 2013-06-14
# 更新日: 2013-06-14
#----------------------------------------------- --- --------------------------------
pymongo をインポート
OS をインポート
#接続を作成するときに、ホストとポートのパラメーターを指定します。
conn = pymongo.Connection(host='127.0.0.1',port=27017)
#管理データベースにはアカウント、connect-authentication-switch library があります
db_auth = conn.admin
db_auth.authenticate('sa','sa')
#データベースに接続します
db = conn .abc
#接続テーブル
コレクション = db.stu
#すべてのテーブル名を表示
db.collection_names()
#print db.collection_names()
#テーブル データにアクセスし、 item の行の列
item = collection.find({},{"sname":1,"course":1,"_id":0})
を指定します。
print rows.values()
#テーブル内のデータ行にアクセスします
print collection.find_one()
#collection.find_one() の行のすべての列を取得
:
行を出力
#Insert
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)
#行数を取得する
print collection.find().count()
print collection.find({"sno":100})
#特定の列の値で並べ替えます。 pymongo.DESCENDING: 逆順; pymongo.ASCENDING: 昇順。 sno 逆順によると
item = collection.find().sort('sno',pymongo.DESCENDING)
item の行に対して:
print rows.values()
#複数列の並べ替え
item = collection.find().sort([('sno',pymongo.DESCENDING),('A',pymongo.ASCENDING)])
#Update、最初のパラメータは条件、2 番目のパラメータは更新操作、$set,%inc,$push,$ne,$addToSet,$rename などです。
collection.update({" sno" :100},{"$set":{"sno":101}})
#複数の行と列を更新
collection.update({"sno":102},{"$set" : {"sno":105,"sname":"SSSS"}},multi=True)
#Delete、最初のパラメータは条件、2 番目のパラメータは削除操作です。
collection.remove({"sno":101})
'''
sno: 学生番号; sname: コース: 科目
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 ドキュメント内のコレクションの数をカウントします:
import pymongo
conn = pymongo.Connection(host='127.0.0.1',port=27017)
db = conn.abc #abc document
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()') #変数をコレクションとして扱う方法
または
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')
'''
3、Python 操作 Redis:
#!/bin/env python
# -*- エンコーディング: utf-8 -*-
#------ -------------------------------------------------- -----------
# 目的: python_to_mongodb の例
# 著者: zhoujy
# 作成日: 2013-06-14
# 更新: 2013-06-14
#----------------------------------------------- --------------------------------
redis をインポート
f = open('aa.txt')
while True:
line = f.readline().strip().split(' # ')
if line == ['' ]:
Break
UserName,Pwd,Email = line
# print name.strip(),pwd.strip(),email.strip()
rc = redis.StrictRedis(host=' 127.0.0.1',port=6379,db=15)
rc.hset('名前:' + ユーザー名,'電子メール',電子メール)
rc.hset('名前:' + ユーザー名,'パスワード' ,Pwd)
f.close()
alluser = rc.keys('*')
#print alluser
print "========================== =========读残去データ=================================== "
alluser のユーザー:
print ' # '.join((user.split(':')[1],rc.hget(user,'Password'),rc.hget(user,'メール')))
四、Python 操作 memcache:
import memcache
mc = memcache.Client(['127.0.0.1:11211 '],debug=1)
#!/usr/bin/env python
#coding=utf-8
MySQLdb をインポート
memcache をインポート
sys をインポート
インポート時間
def get_data(mysql_conn):
# nn = raw_input("プレス文字列名:")
mc = memcache.Client(['127.0.0.1:11211'],debug=1)
t1 =time.time()
value = mc.get('zhoujinyia')
if value == None:
t1 = time.time()
print t1
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()
print t2
t =round(t2-t1)
print "mysql コスト %s 秒から" %t
print item
mc.set('zhoujinyia ',item,60)
else :
t2 = time.time()
t=round(t2-t1)
print "from memcache コスト %s 秒" %t
print value
if __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)

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











このチュートリアルでは、Pythonを使用してZIPFの法則の統計的概念を処理する方法を示し、法律の処理時にPythonの読み取りおよび並べ替えの効率性を示します。 ZIPF分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPFの法律を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 ZIPFの法則 ZIPFの法則は単に意味します。大きな自然言語のコーパスでは、最も頻繁に発生する単語は、2番目の頻繁な単語のほぼ2倍の頻度で表示されます。 例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁な言葉は「thであることに気付くでしょう。

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

ノイズの多い画像を扱うことは、特に携帯電話や低解像度のカメラの写真でよくある問題です。 このチュートリアルでは、OpenCVを使用してPythonの画像フィルタリング手法を調査して、この問題に取り組みます。 画像フィルタリング:強力なツール 画像フィルター

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

データサイエンスと処理のお気に入りであるPythonは、高性能コンピューティングのための豊富なエコシステムを提供します。ただし、Pythonの並列プログラミングは、独自の課題を提示します。このチュートリアルでは、これらの課題を調査し、グローバルな承認に焦点を当てています

このチュートリアルでは、Python 3にカスタムパイプラインデータ構造を作成し、機能を強化するためにクラスとオペレーターのオーバーロードを活用していることを示しています。 パイプラインの柔軟性は、一連の機能をデータセットに適用する能力にあります。

Pythonオブジェクトのシリアル化と脱介入は、非自明のプログラムの重要な側面です。 Pythonファイルに何かを保存すると、構成ファイルを読み取る場合、またはHTTPリクエストに応答する場合、オブジェクトシリアル化と脱滑り化を行います。 ある意味では、シリアル化と脱派化は、世界で最も退屈なものです。これらすべての形式とプロトコルを気にするのは誰ですか? Pythonオブジェクトを維持またはストリーミングし、後で完全に取得したいと考えています。 これは、概念レベルで世界を見るのに最適な方法です。ただし、実用的なレベルでは、選択したシリアル化スキーム、形式、またはプロトコルは、プログラムの速度、セキュリティ、メンテナンスの自由、およびその他の側面を決定する場合があります。

Pythonの統計モジュールは、強力なデータ統計分析機能を提供して、生物統計やビジネス分析などのデータの全体的な特性を迅速に理解できるようにします。データポイントを1つずつ見る代わりに、平均や分散などの統計を見て、無視される可能性のある元のデータの傾向と機能を発見し、大きなデータセットをより簡単かつ効果的に比較してください。 このチュートリアルでは、平均を計算し、データセットの分散の程度を測定する方法を説明します。特に明記しない限り、このモジュールのすべての関数は、単に平均を合計するのではなく、平均()関数の計算をサポートします。 浮動小数点数も使用できます。 ランダムをインポートします インポート統計 fractiから
