Basisumgebung: Python 3.5.1
MySQL-Version: 5.6.35 (RPM-Installationsmethode)
Betriebssystem: Centos7.3 und Windows7
1 Einführung in das Verbindungsdatenbankmodul:
Derzeit werden hauptsächlich die folgenden Module verwendet: MySQLdb und pymsql sowie der offiziell von MySQL bereitgestellte MySQLdb-Treiber python2.X und python3.X Ich werde mehr Pymsql verwenden und später den offiziellen MySQL-Connector-Python studieren. Dieses Lernen und diese Übung basieren alle auf dem Pymsql-Modul.
Die Verwendung von PyMySQL ist fast die gleiche wie die von MySQLdb. Wenn Sie an die Verwendung von MySQLdb gewöhnt sind, müssen Sie nur „import MySQLdb“ in „import pymysql“ ändern.
2. Einführung in die Methode und Parameter der Pymysql-Verbindung zur Datenbank:
Pymysql stellt eine Verbindung zu MySQL her. Mit der Methode pymysql.connect() können viele Parameter angepasst werden:
Verbindungsbeispiel:
connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner",passwd="123123", db="DB",charset="utf8",connect_timeout=3000)
Die Beispielverbindung umfasst hauptsächlich Parameter wie Host, Benutzer, Passwort und Port
Verbindungsbeispiel 2:
connect=pymysql.connect( "192.168.186.157", "winner", "123123", "test")
Es müssen keine Parameter wie Host hinzugefügt werden, aber das Format ist festgelegt. Der Host, der Benutzer, das Passwort und die anfängliche Verbindungsdatenbank können nicht ausgetauscht werden.
Das obige Beispiel mit Parametern ist relativ lockerer.
Hinweis: Der Port und das Verbindungszeitlimit sind hier alle int, daher sind keine Anführungszeichen erforderlich.
Die vom Verbindungsobjekt zurückgegebene connect()-Funktion:
Beim Betrieb der MySQL-Datenbank in Python verwenden wir hauptsächlich die Cursor-Erfassungsmethoden counect.cursor () und Cursor.execute (), um die Datenbank zu betreiben, z. B. zum Erstellen von Datenbanken und Datentabellen Stellen Sie direkt eine Verbindung zum MySQL-Client her und führen Sie die SQL-Anweisung aus. Unsere weiteren Vorgänge sind das Hinzufügen, Löschen, Ändern, Überprüfen und andere Vorgänge.
Das Cursorobjekt bietet auch mehrere Methoden:
Beispiel 1. Verbinden Sie den MySQL-Server 192.168.186.157, um den PyMySQL-Bibliothekszeichensatz als utf8 zu erstellen
#/usr/bin/env python
#_* _coding :utf-8_*_
#Pymysql-Modul importieren
Pymysql importieren
#Verwenden Sie die Methode pymysql.connect(), um eine Datenbankverknüpfung zu erstellen
con=pymysql .connect(host='192.168.186.157',user='winner',passwd='123123',port=3306)
#Verwenden Sie die Methode con.cursor(), um einen Cursor zu erstellen
cursor =con.cursor()
sql=" Datenbank erstellen, wenn nicht vorhanden, pymysql-Standardzeichensatz utf8;"
'''sql="""Tabelle erstellen falls nicht vorhanden, Klasse (id int (10) Primärschlüssel auto_increment,
Name varchar(20) nicht null, Adresse varchar(20) nicht null Standard „gansu“)“““
' ''
cursor.execute(sql)
cursor.execute("Datenbanken anzeigen")
dataname=cursor.fetchall()
print( Datenname)
Ausführungsergebnisse:
(('information_schema',), ('#mysql50#2017-03-16_09-38-47',), ('DB',), ('mysql',), ('performance_schema',),
('pymysql',), ('test',), ('winner_mas',))
Prozess abgeschlossen mit Exit-Code 0
Beispiel 2: Verbinden Sie die neu erstellte PyMySQL-Datenbank, um eine Klassentabelle zu erstellen
#/usr/bin/env python
#_*_coding:utf-8_*_
#导入pymysql模块
pymysql importieren
#使用pymysql.connect()方法创建数据库链接
con=pymysql.connect(host='192.168.186.157',user='winner',passwd='123123',port=3306,db= 'pymysql')
#使用con.cursor()方法创建游标
cursor=con.cursor()
#sql=" create database If Not Exists pymysql default Zeichensatz utf8;"
sql="""Tabelle erstellen, falls nicht vorhanden, Klasse (id int(10) Primärschlüssel auto_increment,
Name varchar(20) nicht null, Adresse varchar(20 ) nicht null Standardwert "gansu")"""
cursor.execute(sql)
cursor.execute("show tables")
dataname=cursor.fetchall( )
print(dataname)
C:UsersAdministratorAppDataLocalProgramsPythonPython35python.exe C:/Users/Administrator/PycharmProjects/python/createdatabase.py
(('class',), )
C:UsersAdministratorAppDataLocalProgramsPythonPython35libsite-packagespymysqlcursors.py:166: Warnung: (1050, „Tabelle 'Klasse' existiert bereits“)
result = self._query(query)
Prozess mit Exit-Code 0 abgeschlossen
#/usr/bin/env python
#_*_coding:utf-8_*_
#导入pymysql模块
pymysql importieren
#打开数据库链接
connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner",passwd="123123" ,db="pymysql",charset="utf8",connect_timeout=3000)
#使用cursor方法获取操作游标
cursor=connect.cursor()
sql =''' insert into class (name,address)
values("JSP","go"),("winner","back"),("GOOD","contine"),( "cursor","execute");
'''
#使用execute方法操作数据库
cursor.execute(sql)
#事务提交
#connect.commit()
data=cursor.execute("select * from class order by id desc" )
#使用fetchall方法获取操作结果
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'))
Prozess mit Exit-Code 0 abgeschlossen
由此我们发现数据库的事务关系在软件开发的过程当中是相当重要的一部分,所以在对事务处理的时候需要严谨.
提交事务的源代码:
#/usr/bin/env python
#_*_coding:utf-8_*_
#导入pymysql模块
pymysql importieren
#打开数据库链接
connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner",passwd="123123" ,db="pymysql",charset="utf8",connect_timeout=3000)
#使用cursor方法获取操作游标
cursor=connect.cursor()
sql =''' insert into class (name,address)
values("JSP","go"),("winner","back"),("GOOD","contine"),( „Cursor“, „Ausführen“);
'''
#Verwenden Sie die Ausführungsmethode, um die Datenbank zu betreiben
cursor.execute(sql)
#Transaktionsübermittlung
verbinden. commit()
data=cursor.execute("select * from class order by id desc" )
#Verwenden Sie die fetchall-Methode, um das Operationsergebnis zu erhalten
data= Cursor.fetchall()
print(data)
#!/usr/bin/python
#encoding=utf-8
# -* - Kodierung:utf-8 -*-
Betriebssystem importieren
Kalender importieren
Datum/Uhrzeit importieren
MySQLdb importieren
Betriebssystem importieren, sys, re,string
import time, tarfile,getopt
import socket
import struct
reload(sys)
sys .setdefaultencoding('utf- 8')
optmap = {
'dbuser': 'tongji',
'dbpass': '64CE0CEE9A85F22C',
'dbhost': '192.168.1.10',
'dbport': 3306,
'dbname': 'web_basic'
}
code='201613'
now = int(time.time())
msgid=code+str(now)
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
außer 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 und ip !=' NULL' AND (signtype = '1' OR signtype = '3') limit 150 ;"
#print reqsql
ret = sql_select(reqsql)
n = 0
für Zeile in ret:
n += 1
wenn n
print str(row[ 1])+', '+str (Zeile [8])Str (Zeile [0]) drucken
Str (Zeile [1])
print str(row[2])
print str(row[3])
if str(row[9]).strip() == '0' and 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' und 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-*-
#明细
MySQLdb importieren
import os, sys, re,string
import time, tarfile,getopt
optmap = {
'dbuser' : 'haoren',
'dbpass': 'FqDxhG4d',
'dbhost': '192.168.1.10',
'dbport': 33 06,
'dbname' : 'JSDB '
}
def get_files(dir, pattern):
res_file_list =[]
if os.path.exists(dir):
cur_file_list = os.listdir(dir)
für Dateiname 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:')
für op, Wert in opts:
if op == '-d':
m = re.search('[0-9]{8}', value)
if m:
cur_day = value
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="TABELLE ERSTELLEN, WENN NICHT EXISTIERT `JIESUANTONGJI_%s` like JIESUANTONGJISAMPLE"%tabletime
db_conn.query(sql)
db_conn.query("delete from. J IESUANTONGJI_% s"%tabletime)
if os.path.exists("/tmp/JieSuanTongJi2016.txt"):
os.system("rm -f /tmp/JieSuanTongJi2016.txt")
file_list2=get_files(dirname,'billserver')
für Datei2 in file_list2:
command = "cat %s/%s | grep -h -w 结算统计 |grep -v 人民币消费结算统计 >> /tmp/JieSuanTongJi2016.txt"%(dirname,file2)
os.system(command)
#结算统计记录放在txt文档里面
filename='/ tmp/JieSuanTongJi2016.txt'
record = {}
a_file = open(filename, 'r')
#160125-11:00:14 Bill[40268] INFO: [结算统计]时间(1453690814)类别(1)名称(购物卡收入)平台(3977962)等级(2)用户(65147500)赠送(1)个购物卡(39)给客户(65147500),客户等级(28), 签约(1), 100, 8000, 1320960台当前人民币(335560)
für a_line in a_file.readlines():
m = re.search("^(S+) Bill[d+] INFO: [结算统计]时间((d+))类别((d+))名称((S+) )平台((d+))等级((d+))用户((d+))赠送((d+))个购物卡((d+))给客户((d+)),客户等级((d+)),签约((d+))人民币((d+))", a_line)
if m:
#print "第一项:"+m.group(1)
# print „第二项:“+m.group (2)
Element: "+M.Group (5)
) #print" Der 10. Artikel: "+M.Group (10)
#print" Der 11. Element: "++ m.group(11)
(14)
#print "Das 17. Element:"+m. group(17) #print "Das 18. Element:"+m.group(18) if int( m.group(14)) >0 or int(m.group (15)) >0 : CHANNELRECVGOLD,CURRENTSINGERGOLD,CURRENTCHANNELGOLD) Werte(% 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(8)), int(m.group(9)),int(m.group(10)),int(m.group( 11)),int(m.group(12)),int(m.group(13)), int(m.group(14)),int(m.group(15)),int(m.group( 16)),int(m.group(17)))) a_file.close () db_conn.commit() db_cursor.close() db_conn.close()main() #if __name__ == "__main__":# main()
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung von Python zum Betrieb der MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!