Maison >développement back-end >Tutoriel Python >Exemple de connexion à une base de données Python 3.x (méthode pymysql)

Exemple de connexion à une base de données Python 3.x (méthode pymysql)

高洛峰
高洛峰original
2017-02-23 15:59:131410parcourir

Étant donné que le module MySQLdb ne prend pas encore en charge Python3.x, si Python3.x veut se connecter à MySQL, vous devez installer le module pymysql.

Le module pymysql peut être installé via pip. Mais si vous utilisez l'IDE pycharm, vous pouvez utiliser le projet python pour installer des modules tiers.

[Fichier] >> [paramètres] >> [Projet : python] >>

Puisque Python unifie l'interface de connexion à la base de données, pymysql et MySQLdb sont similaires dans leur utilisation : Python 3.x 连接数据库示例(pymysql 方式)

description du paramètre pymysql.Connect()

host(str) : adresse du serveur MySQL
  • port(int) : numéro de port du serveur MySQL
  • user (str) : nom d'utilisateur
  • passwd(str) : Mot de passe
  • db(str) : Nom de la base de données
  • charset (str) : Encodage de connexion
  • Méthodes prises en charge par l'objet de connexion

cursor() Utilisez cette connexion pour créer et renvoyer un curseur
  • commit() Valider la transaction en cours
  • rollback() Annuler la transaction en cours
  • close() Fermer la connexion
  • Méthodes prises en charge par l'objet curseur

execute(op) Exécuter une commande de requête de base de données
  • fetchone() Obtenez la ligne suivante du jeu de résultats
  • fetchmany(size) Obtenez les prochaines lignes du jeu de résultats
  • fetchall() Obtenez toutes les lignes de l'ensemble de résultats
  • rowcount() Renvoie le nombre de données ou de lignes affectées
  • close() Ferme l'objet curseur
  • ==================MySQL=== ===== ============
Tout d'abord, avant de vous connecter à la base de données, créez une table de transactions pour faciliter le test des fonctions de pymysql :

DROP TABLE IF EXISTS `trade`;

CREATE TABLE `trade` (
 `id` int(4) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(6) NOT NULL COMMENT '用户真实姓名',
 `account` varchar(11) NOT NULL COMMENT '银行储蓄账号',
 `saving` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户储蓄金额',
 `expend` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户支出总计',
 `income` decimal(8,2) unsigned NOT NULL DEFAULT '0.00' COMMENT '账户收入总计',
 PRIMARY KEY (`id`),
 UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO `trade` VALUES (1,'乔布斯','18012345678',0.00,0.00,0.00);
==================Python================= ===

Utilisez le script Python pour implémenter le traitement des ajouts, des suppressions, des modifications, des requêtes et des transactions :

.
import pymysql.cursors

# 连接数据库
connect = pymysql.Connect(
  host='localhost',
  port=3310,
  user='woider',
  passwd='3243',
  db='python',
  charset='utf8'
)

# 获取游标
cursor = connect.cursor()

# 插入数据
sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )"
data = ('雷军', '13512345678', 10000)
cursor.execute(sql % data)
connect.commit()
print('成功插入', cursor.rowcount, '条数据')

# 修改数据
sql = "UPDATE trade SET saving = %.2f WHERE account = '%s' "
data = (8888, '13512345678')
cursor.execute(sql % data)
connect.commit()
print('成功修改', cursor.rowcount, '条数据')

# 查询数据
sql = "SELECT name,saving FROM trade WHERE account = '%s' "
data = ('13512345678',)
cursor.execute(sql % data)
for row in cursor.fetchall():
  print("Name:%s\tSaving:%.2f" % row)
print('共查找出', cursor.rowcount, '条数据')

# 删除数据
sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d"
data = ('13512345678', 1)
cursor.execute(sql % data)
connect.commit()
print('成功删除', cursor.rowcount, '条数据')

# 事务处理
sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = '18012345678' "
sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = '18012345678' "
sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = '18012345678' "

try:
  cursor.execute(sql_1) # 储蓄增加1000
  cursor.execute(sql_2) # 支出增加1000
  cursor.execute(sql_3) # 收入增加2000
except Exception as e:
  connect.rollback() # 事务回滚
  print('事务处理失败', e)
else:
  connect.commit() # 事务提交
  print('事务处理成功', cursor.rowcount)

# 关闭连接
cursor.close()
connect.close()
============== ====Résultats des tests====================

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à tout le monde. L'apprentissage est utile et j'espère que tout le monde soutiendra le site Web PHP chinois. Python 3.x 连接数据库示例(pymysql 方式)

Pour plus d'exemples de connexion à une base de données Python 3.x (méthode pymysql), veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn