Maison >développement back-end >Tutoriel Python >Explication détaillée de l'utilisation de Python pour faire fonctionner la base de données MySQL
Environnement de base : Python 3.5.1
version mysql : 5.6.35 (méthode d'installation tr/min)
Système d'exploitation : Centos7.3 et windows7
1 python. Introduction au module de base de données de connexion :
Actuellement, les principaux utilisés sont les suivants, MySQLdb et pymsql, ainsi que le pilote mysql-connector-python officiellement fourni par mysql. Le module MySQLdb est plus couramment utilisé dans. python2.X et python3.X J'utiliserai davantage pymsql et j'étudierai le mysql-connector-python officiel plus tard. Cet apprentissage et cette pratique sont tous basés sur le module pymsql.
L'utilisation de PyMySQL est presque la même que celle de MySQLdb. Si vous êtes habitué à utiliser MySQLdb, il vous suffit de modifier import MySQLdb pour importer pymysql.
2. Introduction à la méthode et aux paramètres de connexion de pymysql à la base de données :
pymysql se connecte à mysql Grâce à la méthode pymysql.connect(), de nombreux paramètres peuvent être ajustés :
Exemple de connexion :
connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner",passwd="123123", db="DB",charset ="utf8",connect_timeout=3000)
L'exemple de connexion comprend principalement des paramètres tels que l'hôte, l'utilisateur, le mot de passe et le port
Exemple de connexion 2 :
connect=pymysql.connect( "192.168.186.157","winner","123123","test")
Il n'est pas nécessaire d'ajouter des paramètres tels que l'hôte, mais le format est fixe. L'hôte, l'utilisateur, le mot de passe et la base de données de connexion initiale ne peuvent pas être échangés,
L'exemple ci-dessus avec les paramètres est relativement plus simple.
Remarque : le port et le délai d'expiration de la connexion ici sont tous des entiers, donc aucun guillemet n'est nécessaire.
La fonction connect() renvoyée par l'objet de connexion :
Dans le processus d'exploitation de la base de données mysql en Python, nous utilisons principalement les méthodes d'acquisition de curseur counect.cursor() et Cursor.execute() pour faire fonctionner la base de données, comme la création de bases de données et de tables de données. directement Connectez-vous simplement au client MySQL et exécutez l'instruction SQL, donc nos autres opérations sont des opérations telles que l'ajout, la suppression, la modification et la vérification
L'objet curseur fournit également plusieurs méthodes :
Exemple 1. Créez une bibliothèque pymysql connectée au serveur mysql à 192.168.186.157 Le jeu de caractères est utf8
#/usr/bin/env python
. #_*_coding :utf-8_*_
#Import pymysql module
import pymysql
#Utilisez la méthode pymysql.connect() pour créer un lien de base de données
con=pymysql .connect(host='192.168.186.157',user='winner',passwd='123123',port=3306)
#Utilisez la méthode con.cursor() pour créer un curseur
cursor =con.cursor()
sql=" créer une base de données s'il n'existe pas, le jeu de caractères par défaut pymysql utf8;"
'''sql="" "créer une table s'il n'existe pas de classe (id int (10) clé primaire auto_increment,
nom varchar(20) non nul, adresse varchar(20) non nulle par défaut "gansu")"""
'''
cursor.execute(sql)
cursor.execute("afficher les bases de données")
dataname=cursor.fetchall()
print(dataname)
Résultats de l'exécution :
(('information_schema',), ('#mysql50#2017-03-16_09-38-47',), ('DB' ,), ('mysql',), ('performance_schema',),
('pymysql',), ('test',), ('winner_mas',))
Processus terminé avec le code de sortie 0
Exemple 2 : Connectez-vous à la base de données pymysql nouvellement créée pour créer une table de classe
#/usr/bin/env python
#_*_coding:utf-8_*_
#Importer le module pymysql
importer pymysql
#Utilisez la méthode pymysql.connect() pour créer un lien de base de données
con=pymysql.connect(host='192.168.186.157',user='winner',passwd='123123',port=3306 ,db= 'pymysql')
#Utilisez la méthode con.cursor() pour créer un curseur
cursor=con.cursor()
#sql=" create base de données s'il n'existe pas, jeu de caractères par défaut pymysql utf8;"
sql="""créer une table s'il n'existe pas, classe (id int(10) clé primaire auto_increment,
nom varchar(20) not null, adresse varchar(20) ) non null par défaut "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 : Avertissement : (1050, "La table 'class' existe déjà")
result = self._query( requête)
Processus terminé avec le code de sortie 0
#/usr/bin/env python
#_*_coding:utf-8_*_
#Importer le module pymysql
importer pymysql
#Ouvrir le lien de la base de données
connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner ",passwd="123123" ,db="pymysql",charset="utf8",connect_timeout=3000)
#Utilisez la méthode du curseur pour obtenir l'opération curseur
cursor=connect. curseur()
sql =''' insérer dans la classe (nom,adresse)
valeurs("JSP","go"),("winner","back"),( "GOOD","contine"),( "cursor","execute");
'''
#Utilisez la méthode d'exécution pour faire fonctionner la base de données
curseur .execute(sql)
#Transaction Submit
#connect.commit()
data=cursor.execute("select * from class order by id desc" )
#Utilisez la méthode fetchall pour obtenir le résultat de l'opération
data=cursor.fetchmany(5)
print(data)
Remarque : la soumission de la transaction une partie est commentée ici, et je vais démontrer la situation de non-soumission de la transaction.
Résultat de l'exécution (pour la quatrième fois) :
C:UsersAdministratorAppDataLocalProgramsPythonPython35python.exe C:/Users/Administrator/PycharmProjects/python/insertmysql.py
((12 , 'curseur', 'exécuter'), (11, 'BON', 'contine'), (10, 'gagnant', 'retour'), (9, 'JSP', 'go'))
Processus terminé avec le code de sortie 0
De là, nous constatons que la relation transactionnelle de la base de données est une partie très importante du processus de développement logiciel, nous devons donc être rigoureux lors du traitement des transactions.
Code source de la transaction validée :
#/usr/bin/env python
#_*_coding:utf-8_*_
#Import module pymysql
importer pymysql
#Ouvrir le lien de la base de données
connect=pymysql.connect(host="192.168.186.157",port=3306,user="winner", passwd="123123",db="pymysql",charset="utf8",connect_timeout=3000)
#Utilisez la méthode du curseur pour obtenir l'opération curseur
cursor=connect.cursor( )
sql=''' insérer dans la classe (nom,adresse)
valeurs("JSP","go"),("winner","back"),("BON "," contine"),("cursor","execute");
'''
#Utilisez la méthode d'exécution pour faire fonctionner la base de données
cursor.execute(sql)
#Soumission de transaction
connectez-vous. commit()
data=cursor.execute("select * from class order by id desc" )
#Utilisez la méthode fetchall pour obtenir le résultat de l'opération
data= slider.fetchall()
print(data)
#!/usr/bin/python
#encoding=utf-8
# -* - codage:utf-8 -*-
importer os
importer calendrier
importer dateheure
importer MySQLdb
importer os, 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_' msgstr '_0001_V2.xml','w ')
f1 = file('/home/haoren/nian/1550035_RELATIONACCOUNTINFO_' msgstr '_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 ):
essayez :
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
Sauf mysqldb.error, e:
Imprimer "mysql error%d:%s"%(e.args [0 ], e.args [e.args [e.args [ 1]) return ''def getusercoin(): reqsql = "select * from singer_auth où status = 10 et ip !='NULL' AND (signtype = '1' OR signtype = '3') limit 150 ;" #print reqsql ret = sql_select(reqsql) n = 0 pour la ligne en ret : n = 1 si n print str(row[0])
print str(row[2])
print str(row[3])
if str(row[9]).strip() == '0' et str (row[10]).strip() == '0':
print str(row[9]) ',' str(row[10])
elif str(row [9]).strip() == '0' et str(row[10]).strip() != '0':
print str(row[9]) ',' str( row[10]).split('/')[6]
elif str(row[9]).strip() != '0' et 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]
autre :
n = 0
getusercoin()
f.close()
f1.close()
#!/usr /bin/env python
#-*-coding:utf-8-*-
#明细
import MySQLdb
import os, sys, Re, String
Import Time, 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)
pour file_name dans 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))
opte, args = getopt.getopt(sys.argv[1:], 'd:')
pour op, valeur dans les opts :
if op == '-d' :
m = re.search('[0-9]{8}', valeur)
si m:
cur_day = valeur
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="CRÉER UNE TABLE SI N'EXISTE PAS `JIESUANTONGJI_%s` comme JIESUANTONGJISAMPLE"%tabletime db_conn.query(sql) db_conn.query("supprimer de JIESUANTONG JI_% s"%tabletime) if os.path.exists("/tmp/JieSuanTongJi2016.txt"): os.system("rm -f /tmp/JieSuanTongJi2016.txt") file_list2=get_files(dirname,'billserver') pour le fichier2 dans 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), 客户获得人民币(8000), 平台获得人民币(2000),客户当前人民币(1320960)平台当前人民币(335560) pour une_ligne dans a_file.readlines(): m = re.search("^(S ) Bill[d ] INFO : [结算统计]时间((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 "Le troisième élément : " m.group(3)
#print "Le quatrième élément :" #print "Le 5ème élément :" " m.group(5)
#print "Le huitième élément :" m.group(8) #print "Le 9ème élément :" #print "Le 10ème élément :" " m.group(10) 🎜>
print " Le quinzième élément : "m.group (15)
#print" 16ème élément : "m.group (16)
#print" item : "m. group(17)
(15)) >0:
a_file.close() db_conn.commit()db_cursor .close() db_conn.close()main()#if __name__ == "__main__":# main()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!