Diretório de artigos
prefácio
Antes de aprender, certifique-se de instalar o MySQL e iniciar os serviços relacionados. Para o método de instalação do MySQL e verificar a senha inicial, consulte a primeira parte do artigo vinculado abaixo:
https://blog.csdn.net/youngwyj/article/details/124293362?spm=1001.2014.3001.5502
1. Instalação do pymsql
Use o seguinte comando diretamente no ambiente python3:
pip install pymsql
#或者
pip3 install pymysql
Após a conclusão da instalação, você pode usar o seguinte comando para visualizar:
pip list | grep PyMySQL
#注意大小写
O resultado é o seguinte:
Dois, conecte-se ao banco de dados
pymysql usa a função pymsql.connect() para se conectar ao banco de dados, e seus parâmetros comuns são os seguintes:
parâmetro | ilustrar |
---|---|
dsn | Nome da fonte de dados, dado que este parâmetro indica a dependência do banco de dados |
host=Nenhum | Endereço de conexão do banco de dados |
usuário=Nenhum | nome de usuário do banco de dados |
senha='' | senha do usuário do banco de dados |
banco de dados=Nenhum | O nome do banco de dados ao qual se conectar |
porta=3306 | Número da porta, o padrão é 3306 |
conjunto de caracteres ='' | A codificação de caracteres do banco de dados a ser conectado (você pode usar \s para visualizá-lo após fazer login no mysql no terminal, conforme a figura abaixo) |
connect_timeout=10 | O tempo limite de conexão com o banco de dados, o padrão é 10 |
porta=3306 | Número da porta, o padrão é 3306 |
Depois de se conectar ao banco de dados, você precisa criar um objeto de cursor. O módulo executará a instrução sql e obterá os resultados da consulta por meio do objeto de cursor e exibirá diretamente cada método por meio do código.
Exemplo:
import pymysql
db = pymysql.connect(
host="localhost",
port=3306,
user='root', #在这里输入用户名
password='888888', #在这里输入密码
charset='utf8mb4'
) #连接数据库
cursor = db.cursor() #创建游标对象
sql = 'show databases' #sql语句
cursor.execute(sql) #执行sql语句
one = cursor.fetchone() #获取一条数据
print('one:',one)
many = cursor.fetchmany(3) #获取指定条数的数据,不写默认为1
print('many:',many)
all = cursor.fetchall() #获取全部数据
print('all:',all)
cursor.close()
db.close() #关闭数据库的连接
resultado da operação:
one: ('coldbox',)
many: (('coldboxtest',), ('db_student',), ('information_schema',))
all: (('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
Pode ser visto nos resultados que os valores de retorno de fetchone(), fetchmany(size) e fetchall() são tuplas, mas fetchone() retorna uma única tupla e as outras duas retornam tuplas.
3. Criar e gerenciar banco de dados
Exemplos de instruções SQL que usam objetos de cursor para executar a criação e exclusão do banco de dados:
import pymysql
db = pymysql.connect(
host="localhost",
port=3306,
user='root', #在这里输入用户名
password='888888', #在这里输入密码
charset='utf8mb4'
)
cursor = db.cursor() #创建游标对象
try:
sql = 'show databases'
cursor.execute(sql)
print('未创建数据库前:',cursor.fetchall()) #获取创建数据库前全部数据库
dbname = 'justtest'
sql = 'create database if not exists %s'%(dbname) #创建数据库
cursor.execute(sql)
sql = 'show databases'
cursor.execute(sql)
print('创建新的数据库后:',cursor.fetchall()) #获取创建数据库后全部数据库
sql = 'drop database if exists %s'%(dbname) #删除数据库
cursor.execute(sql)
sql = 'show databases'
cursor.execute(sql)
print('删除新的数据库后:',cursor.fetchall()) #获取删除数据库后全部数据库
except Exception as e:
print(e)
db.rollback() #回滚事务
finally:
cursor.close()
db.close() #关闭数据库连接
resultado da operação:
未创建数据库前: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
创建新的数据库后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('justtest',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
删除新的数据库后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
Quarto, crie e gerencie tabelas
Exemplos de instruções SQL que usam objetos de cursor para executar a criação e gerenciamento de tabelas:
import pymysql
db = pymysql.connect(
host="localhost",
port=3306,
user='root', #在这里输入用户名
password='888888', #在这里输入密码
charset='utf8mb4',
database='justtest' #指定操作的数据库
)
cursor = db.cursor() #创建游标对象
try:
tableName = 'user'
sql = 'create table %s (id varchar(20) not null, name varchar(20) not null, primary key(id))'%(tableName)
cursor.execute(sql) #执行sql语句,创建表
sql = 'show tables'
cursor.execute(sql)
print('显示创建的表:',cursor.fetchall()) #显示创建的表
sql = 'desc %s'%(tableName)
cursor.execute(sql)
print('显示表结构:',cursor.fetchall()) #显示表结构
except Exception as e:
print(e)
db.rollback() #回滚事务
finally:
cursor.close()
db.close() #关闭数据库连接
resultado da operação:
显示创建的表: (('user',),)
显示表结构: (('id', 'varchar(20)', 'NO', 'PRI', None, ''), ('name', 'varchar(20)', 'NO', '', None, ''))
Resumir
Para operações como modificar a estrutura da tabela, inserir, consultar e excluir dados, é aproximadamente o mesmo que as operações acima, principalmente para a escrita de instruções sql, que não serão descritas aqui.
Processo geral:
conectar ao banco de dados -> criar objeto de cursor -> escrever instrução sql -> executar instrução sql -> obter resultado -> fechar conexão com o banco de dados
Parâmetros comuns da função Connect():
parâmetro | ilustrar |
---|---|
dsn | Nome da fonte de dados, dado que este parâmetro indica a dependência do banco de dados |
host=Nenhum | Endereço de conexão do banco de dados |
usuário=Nenhum | nome de usuário do banco de dados |
senha='' | senha do usuário do banco de dados |
banco de dados=Nenhum | O nome do banco de dados ao qual se conectar |
porta=3306 | Número da porta, o padrão é 3306 |
conjunto de caracteres ='' | A codificação de caracteres do banco de dados a ser conectado (você pode usar \s para visualizá-lo após fazer login no mysql no terminal, conforme a figura abaixo) |
connect_timeout=10 | O tempo limite de conexão com o banco de dados, o padrão é 10 |
porta=3306 | Número da porta, o padrão é 3306 |
Um resumo dos métodos do objeto de conexão retornado pela função connect():
nome do método | ilustrar |
---|---|
fechar() | Feche a conexão com o banco de dados |
comprometer-se() | cometer transação |
reverter() | transação de reversão |
cursor() | Obtenha o objeto cursor, opere o banco de dados, como executar operações DML, chamar procedimentos armazenados, etc. |
Métodos do objeto cursor:
nome do método | ilustrar |
---|---|
callproc(procname,[,parâmetros]) | Chamar procedimentos armazenados requer suporte de banco de dados |
fechar() | fechar o cursor atual |
execute(operação,[,parâmetros]) | Execute operações de banco de dados, instruções sql ou comandos de banco de dados |
executemany(operação, seq_of_params) | para operações em massa |
buscar () | Obtenha o próximo registro no conjunto de resultados da consulta |
buscar muitos (tamanho) | Obter o número especificado de registros |
buscarall() | Obter todos os registros no conjunto de resultados da consulta |
próximo conjunto () | Pular para o próximo conjunto de dados disponível |
tamanho da matriz | Especifica o número de linhas buscadas usando fetchmany(), o padrão é 1 |
setinputsizes(tamanho) | Defina o tamanho da área de memória alocada quando o método execute*() é chamado |
setoutputsizes(tamanho) | Defina o tamanho do buffer da coluna, especialmente útil para grandes colunas de dados |