ホームページ > バックエンド開発 > Python チュートリアル > Pythonを使ってmysqlデータベースを操作する方法を詳しく解説

Pythonを使ってmysqlデータベースを操作する方法を詳しく解説

高洛峰
リリース: 2017-03-22 10:36:40
オリジナル
2779 人が閲覧しました

基本環境:Python 3.5.1

mysqlバージョン:5.6.35(rpmインストール方法)

オペレーティングシステム:Centos7.3とwindows7

1 Python接続データベースモジュールの紹介:

現在主に使用されているものは次のとおりです。次の MySQLdb、pymsql、および mysql によって公式に提供される mysql-connector-python ドライバーです。MySQLdb モジュールは python2.X でより一般的に使用されますが、python3.X ではより多くの pymsql が使用されます。公式の mysql-connector-python については後で説明します。 , この学習と実践はすべて pmsql モジュールに基づいています。

PyMySQL の使用法は MySQLdb とほぼ同じです。MySQLdb の使用に慣れている場合は、import MySQLdb を import pymysql に変更するだけです。

2. データベースに接続する pymysql のメソッドとパラメーターの紹介:

pymysql は mysql に接続します pymysql.connect() メソッドを使用して、多くのパラメーターを調整できます:

 使用python操作mysql数据库详解

接続例:

connect= pymysql.connect(host=" 192.168.186.157",port=3306,user="winner",passwd="123123",db="DB",charset="utf8",connect_timeout=3000)

主に接続例ホスト、ユーザー、パスワード、ポートなどのパラメーターが含まれます

接続例 2:

connect=pymysql.connect("192.168.186.157","winner","123123","test")

host などのパラメータを追加しますが、形式は固定されています。つまり、最初の接続のユーザー、パスワード、およびデータベースは交換できません。また、パラメータを含む上記の例は比較的任意です。

注: ここでのポートと接続タイムアウトはすべて int であるため、引用符は必要ありません

接続オブジェクトによって返される connect() 関数:

 使用python操作mysql数据库详解 Python で mysql データベースを操作するプロセスでは、主にget を使用します。 カーソル メソッド counect.cursor() およびcursor.execute() は、データベースやデータ テーブルの作成など、データベース上で動作します。そのため、カーソルの操作はさらに増えます。オブジェクトには、追加、削除、変更、確認などの操作のためのメソッドもいくつか用意されています。

例 1. 192.168.186.157 の mysql サーバーに接続して、pymysql ライブラリを作成します。文字セットは utf8

Pythonを使ってmysqlデータベースを操作する方法を詳しく解説#/usr です。 / bin/env python

#_*_coding:utf-8_*_

#pymysqlモジュールをインポート

import pymysql

#pymysql.connect()メソッドを使用してデータベースリンクを作成します

con=pymysql.connect (host=' 192.168.186.157',user='winner',passwd='123123',port=3306)

#con.cursor() メソッドを使用してカーソルを作成します

cursor=con.cursor()

sql=" 存在しない場合はデータベースを作成 pymysql デフォルトの文字セット utf8;"

'''sql="""存在しない場合はテーブルを作成 class (id int(10) 主キー auto_increment,

name varchar(20) not null 、address varchar(20) not null デフォルト "gansu")"""

'''

cursor.execute(sql)

cursor.execute("show Databases")

dataname=cursor.fetchall()

print(dataname)

実行結果:

(('information_schema',), ('#mysql50#2017-03-16_09-38-47',), ('DB',), ('mysql' ,), ('performance_schema' ,),

('pymysql',), ('test',), ('winner_mas',))

プロセスは終了コード 0 で終了しました

例 2. just に接続しますクラステーブルを作成するためにpymysqlデータベースを作成しました

#/usr/bin/env python

#_*_coding:utf-8_*_

#pymysqlモデ入力

import pymysql

#使用pymysql.connect()メソッドql. connect(host='192.168.186.157',user='winner',passwd='123123',port=3306,db='pymysql')

#usecon.cursor() メソッド创建游标

cursor=con。 cursor()

#sql=" 存在しない場合はデータベースを作成 pymysql デフォルト文字セット utf8;"

sql="""存在しない場合はテーブルを作成 class (id int(10) 主キー auto_increment,

name varchar(20) ) null ではありません、address varchar(20) null ではありませんデフォルト "gansu")"""

cursor.execute(sql)

cursor.execute("show tables")

dataname=cursor.fetchall()

print (dataname)

c:usersadministratorappdatalocalprogrampythonpython.exe c:/users/administrator/pycharmprojects/createdatabase警告:( 1050, "テーブル 'class' はすでに存在します")

result = self._query(query)

終了コード 0 でプロセスが終了しました

#/usr/bin/env python

#_*_coding:utf-8_* _

#导入pymysql模块

import pymysql

#打开数据库链接

connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner",passwd="123123") ,db ="pymysql",charset="utf8",connect_timeout=3000)

#usecursor メソッド获取操作游标

cursor=connect.cursor()

sql=''' クラス (名前,アドレス) に挿入します

value("JSP","go"),("winner","back"),("GOOD","contine"),("cursor","execute");

'''

#使用実行メソッド操作数据库

cursor.execute(sql)

#事务提交

#connect.commit()

data=cursor.execute("select * from class order by id desc" )

#usefetchallメソッド操作の結果を取得します

data=cursor.fetchmany(5)

print(data)

注意: ここでは、案件が提示される部分が注釈され、以下に案件が提示されない場合が示されます。四回目):

C:UsersAdministratorAppDataLocalProgramsPythonPython35python.exe C:/Users/Administrator/PycharmProjects/python/insertmysql.py

((12, 'cursor', 'execute'), (11, 'GOOD', 'contine '), (10, 'winner', 'back'), (9, 'JSP', 'go'))

プロセスは終了コード 0 で終了しました

取引のソースコード:

#/usr/bin/env python

#_*_coding:utf-8_*_

# pymysql模試块

import pymysql

#打开数据库链接

connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner",passwd="123123",db="pymysql") ,charset="utf8",connect_timeout=3000)

#usecursor メソッド获取操作游标

cursor=connect.cursor()

sql=''' insert into class (name,address)

values("JSP ","ゴー"),("勝者","バック"),("グッド","継続"),("カーソル","実行");

'''

#データベースを操作するにはexecuteメソッドを使用します

cursor.execute(sql)

#トランザクション送信

connect.commit()

data=cursor.execute("select * from class order by id desc" )

#fetchallメソッドを使用して演算結果を取得します

data=cursor.fetchall()

print(data)

#!/usr/bin/python

#encoding=utf-8

# -*- コーディング : UTF-8-*-

IMPORT OS

import Calendar

import Datetime

import mysqldb

import OS, SYS, Re, String

import Time, Tarfile, gettopt

import

import

CT

reload(sys)

sys.setdefaultencoding('utf-8')

optmap = {

'dbuser': 'tongji',

'dbpass': '64CE0CEE9A85F22ち、

'dbhost': ' 192.168 .1.10',

'dbport': 3306,

'dbname': 'web_basic'

}

code='201613'

now = int(time.time())

msgid=code+str (現在)

print msgid

f = file('/home/haoren/nian/1550035_ACCOUNT_'+msgid+'_0001_V2.xml','w+')

f1 = file('/ home/haoren/nian/1550035_RELATIONACCOUNTINFO_ '+msgid+'_0001_V2.xml','w+')

def log(line):

line = line + "rn"

f.write(line)

return

def log1(line):

line = line + "rn"

f1.write(line)

return

def sql_select(reqsql):

try:

db_conn = MySQLdb.connect(user=optmap[ 'dbuser'] 、passwd= optmap['dbpass']、host=optmap['dbhost']、port=optmap['dbport']、db=optmap['dbname']、charset='utf8')

db_cursor =db_conn.cursor()

db_conn.query("use %s"%optmap['dbname'])

count = db_cursor.execute(reqsql)

ret = db_cursor.fetchall()

db_cursor.close( )

db_conn.close

Return Ret

mysqldb.error を除く、E:

Print "mysql error%d:%s"%(e.args [0], e.args [1])

Return '

Def Getusercoin ( ):

reqsql = "select * from singer_auth where status = 10 and ip !='NULL' AND (signtype = '1' ORsigntype = '3') limit 150 ;"

#print reqsql

ret = sql_select (reqsql)

n = 0

for row in ret:

n += 1

if n print str(row[1])+','+str (row [8])print str(row [0])

print str(row[2])

print str(row[3])

if str(row[9]).strip() == '0' および str(row[10]).strip() == '0':

print str(row[9]) +','+ str(row[10])

elif str(row[9]).strip() == '0' and str( row[10]).strip() != '0':

print str(row[9]) +','+str(row[10]).split('/')[6]

elif str(row[9]).strip() != '0' および str(row[10]).strip() == '0':

print str(row[9]).split('/' )[6] +','+str(row[10])

else:

print str(row[9]).split('/')[6] +','+str(row[10] ]).split('/')[6]

else:

n = 0

getusercoin()

f.close()

f1.close()

#!/usr/bin/env python

#-*-coding:utf-8-*-

#明细

import MySQLdb

import os, sys, re,string

インポート時間, tarfile,getopt

optmap = {

'dbuser ' : 'haoren',

'dbpass' : 'FqDxhG4d',

'dbhost' : '192.168.1.10',

'dbport' : 3306,

'dbname' : 'JSDB'

}

def get_files(dir, pattern):

res_file_list =[]

if os.path.exists(dir):

cur_file_list = os.listdir(dir)

for file_name in cur_file_list:

if re.search( pattern, file_name):

res_file_list.append(file_name)

return res_file_list

else:

return 'no'

def main():

cur_day = time.strftime("%Y%m%d" 、time.localtime(time.time()-86400))

opts, args = getopt.getopt(sys.argv[1:], 'd:')

optsの値:

if op == '-d':

m = re.search('[0-9]{8}', value)

if m:

cur_day = 値

else:

print "请输入8位日期(比如:20130215)"

return 'no'

log_day = time.strftime('%y%m%d', time.localtime(time.mktime(time .strptime(cur_day, '%Y%m%d'))))

fmt_day = time.strftime('%Y-%m-%d', time.localtime(time.mktime(time.strptime(cur_day, '%Y%m%d'))))

print '结算统计日期:',fmt_day

#log_day = time.strftime("%y%m%d", time.localtime(time.time() -86400))

dirname="/home/haoren/logdir/%s_67"%log_day

print dirname

db_conn = MySQLdb.connect(user=optmap['dbuser'], passwd=optmap['dbpass'] 、host=optmap['dbhost']、port=optmap['dbport']、db=optmap['dbname'])

db_cursor=db_conn.cursor()

db_conn.query("use %s"%optmap ['dbname'])

tabletime = time.strftime("%y%m%d", time.localtime(time.mktime(time.strptime(cur_day, "%Y%m%d"))))

sql="JIESUANTONGJISAMPLE のような `JIESUANTONGJI_%s` が存在しない場合はテーブルを作成します"%tabletime

db_conn.query(sql)

db_conn.query("JIESUANTONGJI_%s から削除" %tabletime)

os.path の場合。存在します("/tmp/JieSuanTongJi2016.txt"):

os.system("rm -f /tmp/JieSuanTongJi2016.txt")

file_list2=get_files(dirname,'billserver')

file_list2 の file2:

command = "猫 %s/%s | grep -h -w 計算统计 |grep -v 人民币消费計算统计 >> /tmp/JieSuanTongJi2016.txt"%(dirname,file2)

os.system(command)

#结算统计记录放在txt文档里面

filename= '/tmp/JieSuanTongJi2016.txt'

レコード = {}

a_file = open(filename, 'r')

#160125-11:00:14 Bill[40268] 情報: [结算统计] 時間间(1453690814)类别(1)名前(购物卡收)入)平台(3977962)等级(2)用户(65147500)赠送(1)个(39)给(65147500)、客户(28)、签约(1)、消耗(100)、客户(8000)、平台平台人民币(2000),客户当前人民币(1320960)平台当前人民币(335560)

for a_line in a_file.readlines():

m = re.search("^(S+) Bill[d +] 情報: [结算统计] 時間((d+))类别((d+))名前((S+))平台((d+))等级((d+))用户((d+))赠送((d+))个购物卡((d+) )给客户((d+)),客户等级((d+)),签约((d+)),消費人民币((d+)),客户获得人民币((d+)),平台获得人民币((d+)),客户当前人民币((d+))平台当前人民币((d+))", a_line)

if m:

#print "第一项:"+m.group(1)

#print "第二项:"+m.group(2)

#print "3 番目の項目:"+m.group(3)

「#Print」 6 番目の項目: 「+M.Group (6)

#print」 7 番目の項目: 「+m.group (7)

#print" 8 番目: "+m.group (8 )

(11)

「グループ(14)

「10 番目の項目:」+m.group(17)

(15) ) >0 :

RESENTERID、ITEMNUM、ITEMID、SINGERID、SINGERLEVEL、SIGN、CONSUMECOIN、S INGERRECVGOLD,CHANNELRECVGOLD,CURRENTSINGERGOLD ,CURRENTCHANNELGOLD) 値(%d,%d,'%s',%d,%d,%d) ,%d,%d,%d,%d,%d,%d,%d,%d,% d,%d)"%(tabletime,int(m.group(2)),int(m. group(3))、str(m.group(4))、int(m.group(5))、int(m.group(6))、int(m.group(7))、int(m.group(6)) group(8))、int(m.group(9))、int(m.group(10))、int(m.group(11))、int(m.group(12))、int(m.group(11)) group(13)),int(m.group(14)),int(m.group(15)),int(m.group(17))))

,

main()

#if __name__ == "__main__":

# main()

以上がPythonを使ってmysqlデータベースを操作する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート