O melhor tutorial operações de python de banco de dados MySQL em 2024. Neste tutorial você pode aprender O que é MySQLdb?,Como instalar MySQLdb?,Database Connectivity,Criar uma tabela de banco de dados,inserção de banco de dados,consultas de banco de dados,atualizações de banco de dados,eliminação,Excluir dados apagar os dados para a tabela, o seguinte exemplo demonstra apagar os dados na AGE tabela funcionário é superior a 20, todos os dados: #!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close(),Assuntos executivos,Tratamento de erros,
interface de banco de dados padrão do Python para o Python DB-API, Python DB-API fornece uma interface de programação de aplicativo de banco de dados para desenvolvedores.
interface de banco de dados Python suporta grandes bancos de dados, você pode escolher o seu projeto de banco de dados:
Você pode acessar a interface de banco de dados de Python e API Veja lista detalhada dos bancos de dados suportados.
banco de dados diferente, você precisará baixar um módulo DB API diferente, por exemplo, você precisa acessar bancos de dados Oracle e de dados do MySQL, você precisa baixar o módulo de banco de dados Oracle e MySQL.
DB-API é uma especificação que define um conjunto de objetos e o banco de dados modo deve acessar, a fim de fornecer uma interface consistente para acessar uma grande variedade de sistema de banco de dados subjacente e uma variedade de programa de interface de banco de dados.
DB-API do Python, para a maioria da base de dados implementa a interface, usá-lo depois de conectar o banco de dados, você pode usar o mesmo modo, cada banco de dados.
Python DB-API usando o processo:
MySQLdb é uma interface para ligação de banco de dados Mysql Python, que implementa o Python especificação API de banco de dados V2.0, com base na criação da API C do MySQL.
Para escrever scripts MySQL com DB-API, você deve garantir que você tenha instalado MySQL. Copie o seguinte código e executá-lo:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb
Se a saída é o seguinte após a execução, o que significa que você não tem módulo MySQLdb está instalado:
Traceback (most recent call last): File "test.py", line 3, in <module> import MySQLdb ImportError: No module named MySQLdb
Instalar MySQLdb, visite http://sourceforge.net/projects/mysql-python , (a plataforma Linux pode ser acessado: https://pypi.python.org/pypi/MySQL-python ) A partir daqui escolher para a sua plataforma pacote de instalação, pré-compilados em binários e pacote de código-fonte.
Se você selecionar versão binária, o processo de instalação para concluir a instalação básica. Se instalar a partir do código-fonte, você precisa mudar para MySQLdb diretório de nível superior liberação e digite o seguinte comando:
$ gunzip MySQL-python-1.2.2.tar.gz $ tar -xvf MySQL-python-1.2.2.tar $ cd MySQL-python-1.2.2 $ python setup.py build $ python setup.py install
Nota: Certifique-se de ter privilégios de root para instalar os módulos descritos acima.
Antes de conectar ao banco de dados, verifique se os seguintes itens:
Os seguintes exemplos de banco de dados link TESTDB MySQL:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 使用execute方法执行SQL语句 cursor.execute("SELECT VERSION()") # 使用 fetchone() 方法获取一条数据库。 data = cursor.fetchone() print "Database version : %s " % data # 关闭数据库连接 db.close()
Implementação do script acima produz os resultados são os seguintes:
Database version : 5.0.45
Se existe a conexão de banco de dados, podemos usar o método execute () para criar tabelas do banco de dados, criar uma tabela EMPLOYEE mostrado no seguinte:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 cursor.execute("DROP TABLE IF EXISTS EMPLOYEE") # 创建数据表SQL语句 sql = """CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )""" cursor.execute(sql) # 关闭数据库连接 db.close()
O exemplo a seguir usa executar uma instrução SQL INSERT para inserir um registro para o empregado de mesa:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = """INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)""" try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # Rollback in case there is any error db.rollback() # 关闭数据库连接 db.close()
O exemplo acima pode também ser escrito como se segue:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 插入语句 sql = "INSERT INTO EMPLOYEE(FIRST_NAME, \ LAST_NAME, AGE, SEX, INCOME) \ VALUES ('%s', '%s', '%d', '%c', '%d' )" % \ ('Mac', 'Mohan', 20, 'M', 2000) try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
O código a seguir utiliza variáveis para passar parâmetros para uma instrução SQL:
ptptptptptptptptptptptptptptptptpt user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % \ (user_id, password)) ptptptptptptptptptptptptptptptptpt
Python consulta mysql usando método fetchone () para obter um conjunto de dados único utilizando fetchAll método () para se obter uma pluralidade de dados.
Descubra EMPREGADO tabela salarial (salário) campo de dados é maior do que todos de 1000:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 查询语句 sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000) try: # 执行SQL语句 cursor.execute(sql) # 获取所有记录列表 results = cursor.fetchall() for row in results: fname = row[0] lname = row[1] age = row[2] sex = row[3] income = row[4] # 打印结果 print "fname=%s,lname=%s,age=%d,sex=%s,income=%d" % \ (fname, lname, age, sex, income ) except: print "Error: unable to fecth data" # 关闭数据库连接 db.close()
Os resultados da execução acima de script são os seguintes:
fname=Mac, lname=Mohan, age=20, sex=M, income=2000
Dados atualizar operação para atualizar a tabela de dados, os seguintes exemplos TESTDB mesa SEX campo de todas as alterações a 'M', campo de idade é incrementado por 1:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 更新语句 sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M') try: # 执行SQL语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭数据库连接 db.close()
Excluir dados apagar os dados para a tabela, o seguinte exemplo demonstra apagar os dados na AGE tabela funcionário é superior a 20, todos os dados:
#!/usr/bin/python # -*- coding: UTF-8 -*- import MySQLdb # 打开数据库连接 db = MySQLdb.connect("localhost","testuser","test123","TESTDB" ) # 使用cursor()方法获取操作游标 cursor = db.cursor() # SQL 删除语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 提交修改 db.commit() except: # 发生错误时回滚 db.rollback() # 关闭连接 db.close()
mecanismo de transação para garantir a consistência dos dados.
Serviços deve ter quatro propriedades: atomicidade, consistência, isolamento, durabilidade. Estas quatro propriedades são muitas vezes referidas como as propriedades ACID.
Python DB API 2.0 fornece dois métodos de operação confirmação ou anulação.
# SQL删除记录语句 sql = "DELETE FROM EMPLOYEE WHERE AGE > '%d'" % (20) try: # 执行SQL语句 cursor.execute(sql) # 向数据库提交 db.commit() except: # 发生错误时回滚 db.rollback()
Para banco de dados transacional, a programação de banco de dados em Python, quando o cursor é estabelecido, automaticamente começa uma transação de banco de dados invisível.
comprometer método () para todos o método atualizações cursor, rollback () para reverter todas as operações do cursor atual. Cada método foi iniciado um novo negócio.
DB API define alguns erros e operação anormal do banco de dados, a seguinte tabela lista os erros e exceções:
anormal | descrição |
---|---|
aviso | Quando existe um aviso grave para provocar, como a inserção de dados são truncados, e assim por diante. Deve ser uma subclasse de StandardError. |
erro | Todos os outros que não sejam advertências classes de erro. Deve ser uma subclasse de StandardError. |
InterfaceError | É acionado quando o módulo de interface de banco de dados tem seu próprio erro (em vez de um banco de dados de erro) ocorre. Deve ser uma subclasse de erro. |
DatabaseError | Trigger e erros relacionados ao banco de dados. Deve ser uma subclasse de erro. |
DataError | Quando há ocorreu um erro de processamento de dados quando acionado, por exemplo: divisão por zero erro, os dados fora da faixa, e assim por diante. Deve ser uma subclasse de DatabaseError. |
OperationalError | Refere-se a um não-usuário controlado, mas o erro ocorreu enquanto o banco de dados. Por exemplo: acidentalmente desligado, o nome do banco de dados não for encontrado, a operação falhar, erro de alocação de memória, ocorreu etc. operações de banco de dados erro. Deve ser uma subclasse de DatabaseError. |
IntegrityError | erros relacionados a integridade, como a verificação de chave estrangeira falhou e similares. Deve ser DatabaseError subclasse. |
InternalError | erro de banco de dados interno, tal como um cursor (cursor) falhar, a operação de sincronização falha e assim por diante. Deve ser DatabaseError subclasse. |
ProgrammingError | erros processuais, tais como tabela de dados (tabela) não foi encontrado ou já existe, erro de sintaxe SQL, um número de erro de parâmetros e similares. Deve ser uma subclasse de DatabaseError. |
NotSupportedError | Não suportado erro, refere-se à utilização de funções, tais como API ou base de dados não suporta. Por exemplo, usando .rollback na função de objeto de conexão (), mas o banco de dados não suporta transações ou transação foi fechada. Deve ser uma subclasse de DatabaseError. |