1. Histórico do aplicativo
Use python para operar o banco de dados mysql na rede interna corporativa. Porém, python não vem com a biblioteca de funções pymysql para acessar o banco de dados MySQL e precisa ser instalado separadamente. Existem muitas instalações do pymysql na Internet que requerem suporte da Internet. Este artigo explica principalmente como instalar o pymysql offline e apresenta brevemente como o pymysql executa operações mysql.
pymysql é um driver de banco de dados MySQL escrito em Python puro, baseado na especificação Python DB-API 2.0. Ele não apenas suporta a versão Python 2.x, mas também suporta a versão Python 3.x, portanto, ao usá-lo, você precisa escolher o pacote de instalação do pymysql apropriado de acordo com sua própria versão do Python.
2. Preparação ambiental
Versão 1.pymysql. A versão do Python usada neste artigo é python 3.9, então a versão do pymysql usada é 0.9.3.
Versão 2.anaconda3. O ambiente operacional python deste artigo é anaconda 2.3.1, python3.9.
3. Ambiente IDE. Este artigo usa o software IDE python Spyder 5.2.2 que vem com o anaconda.
Versão 4.mysql. A versão do MySQL é 5.7, fornecida pelo wampserver 2.5. Se você quiser usar a versão mysql8.1, você pode consultar o artigo Problemas e soluções encontrados na atualização do banco de dados MySql 5.7 para 8.1_wamp upgrade mysql_hongdi's blog-CSDN blog
3. Instalação do pymsql
1. Baixe o pacote de instalação do pymsql
Endereços de download para outras versões também são fornecidos aqui:
2. Instale o pyMySQL
(1) Descompacte pymsql-0.9.3.tar.gz no diretório de instalação do anaconda, assumindo que seja E:\Anaconda3
(2) Abra a interface de linha de comando cmd, mude para E:\Anaconda3 e digite o comando python setup.py install
(3) Teste se a instalação foi bem-sucedida. Digite o interpretador Python na linha de comando, digite o comando >>>import pymysql e pressione Enter.Se nenhum erro for relatado, pode-se considerar que o pymsql foi instalado com sucesso.
4. Introdução ao desenvolvimento do pymysql
(1) Processo de codificação do pymysql
1. Estabeleça uma conexão com o banco de dados db = pymysql.connect (parâmetro)
Os parâmetros da função connect(): host = endereço do host ou localhost, porta = número da porta (padrão 3306),
usuário = nome de usuário, senha = senha,
banco de dados=banco de dados, charaset=método de codificação (padrão utf8)
2. Crie o objeto cursor cur = db.cursor()
3. Execute o método cursor cur.execute("instrução sql")
4. Envie para o banco de dados db.commit( )
5.Feche o objeto cursor cur.close()
6.Feche a conexão com o banco de dados db.close()
(2) Consulta em pymysql
Adicionar, excluir e modificar o pymysql é relativamente simples. Basta colocar as instruções de inserção, exclusão e atualização correspondentes em cur.execute para execução. Para verificação, o pymysql fornece vários métodos: fetchone, fetchall, fetchmany, que são apresentados a seguir:
1. método fetchone
Retorna um único registro, ou seja, uma tupla. Se não houver dados, retorna None. Por exemplo:
cur.execute("selecione col1,col2, da minhatabela onde id=1");
arr=cur.fetchone()
#Os valores de col1 e col2 podem ser acessados através de arr[0] e arr[1]
imprimir(arr[0],arr[1])
Nota: Use cursor.fetchone() várias vezes em um loop para obter o próximo resultado até que esteja vazio.
2.método fetchall
Retorne vários registros, ou seja, várias tuplas. Se não houver resultado, retorne (). O código é o seguinte
cur.execute("selecione col1,col2, da minhatabela");
arrs = cur.fetchall()
para linha em arrs:
print(row)
3.fetchmany(n)方法
Para obter as primeiras n linhas de dados, o código é o seguinte:
cur.execute("selecione col1,col2, da minhatabela");
arr3 = cur.fetchmany(3) obtém as três primeiras linhas de dados
(3) Uso de espaços reservados em pymysql
O processo de desenvolvimento geralmente requer a passagem de parâmetros em instruções SQL. O método mais simples é emendar strings, mas esse método está sujeito a ataques de injeção de SQL. Portanto, ao desenvolver, é recomendável desenvolver passando parâmetros. Aqui apresentamos principalmente vários métodos.
Suponha que você precise adicionar registros à tabela mytable
Instrução SQL normal: sql = "inserir em mytable (col1,col2) valores ('user1',19),('user2',20);"
1. Método de espaço reservado:
sql = “inserir na minha tabela (col1,col2) valores ('%s',%f),('%s',%f);”
Para manter uma correspondência completa com o formato da instrução SQL, a seguinte instrução precisa ser escrita:
sql = “inserir na minha tabela (col1,col2) valores ('%s',%f),('%s',%f);”%('user1',19,'user2',20)
Nota: Este método requer a adição de aspas simples '%s' ao espaço reservado para string.
2. Método de passagem de parâmetros:
sql = “inserir na minha tabela (col1,col2) valores ('%s',%f),('%s',%f);”
Além de passar sql no método execute, a lista de parâmetros correspondente também deve ser passada, conforme segue:
cur.execute(sql,['user1',19,'user2',20])
Nota: O segundo parâmetro aqui será correspondido sequencialmente de acordo com os valores da lista
(4) Exemplo completo de código-fonte
import pymysql
db = pymysql.connect(host='localhost',
port=3306,
user='user',
password='pwd',
database='mydatabase',
charset='utf8')
cur = db.cursor()
sql = "INSERT INTO interest (col1,col2) VALUES ('%s',%f),('%s',%f);"
try:
cur.execute(sql, ['user1',19,'user2',20])
db.commit()
except Exception as e:
db.rollback()
finally:
cur.close()
db.close()