Premièrement, le premier mot
dans les activités quotidiennes des reptiles, automatisation, analyse des données, logiciels, Web, V.V. En plus de JSON, YAML, XML, certaines données couramment utilisées, telles que MySQL, SQLite, Redis, MongoDB, Memchache, V.V. En général, nous utiliserons des clients spécifiques ou des outils de ligne de commande; Mais s'ils concernent les projets techniques, ces données sont intégrées au code roi. Cet article commence à utiliser la base de données relationnelle la plus utilisée - MySQL.
II: Préparation de
En premier lieu, nous avons créé la base de données XH
via la ligne de client ou de commande MySQL, puis construisez une seule carte dans cette base de données. Personnes
Pour faciliter la démonstration, seules trois écoles sont créées: ID, nom, âge, dans lequel ID est la clé principale
L'activité de Python MySQL comprend principalement les trois manières suivantes:
PYTHON-MYSQL
PYMMYSQL
SQLALCHÉMY
] Parmi eux,
Python-MySQL est créé par syntaxe C, interface raffinée, meilleure performance; Cependant, en raison de nombreuses dépendances environnementales, des installations complexes, il s'est arrêtée à jour, ne prend en charge que Python2
Pymmysql est né pour remplacer Python-mysql, la langue python python écrite pour MySQL Client, facile à installer, supporter Python3.
SQLALCHEMY est un cadre ORM très puissant sans fournir de fonctionnement de base de données de base, principalement en déterminant le modèle la structure de la feuille de données correspondante, largement utilisée dans la programmation Web Python.
Parce que Python-MySQL ne prend pas en charge Python3, cet article ne dit que deux manières
# 安装依赖pip3 install pymysql
d'abord, utilisez les réglages du PIP dépendant
Connexion de la base de données, obtenez les objets de connexion d'objet et les objets de pointeur
Utilisez la connexion dans pymmysql, adresse serveur, numéro de port, nom d'utilisateur, mot de passe et stockage.Dans la base de données. Utilisez le nom de la base de données, vous pouvez obtenir l'objet connecté de la base de données
import pymysql# 数据库连接self.db = pymysql.connect(host='localhost', port=3306, user='root', password='**', database='xh')# 获取游标self.cursor = self.db.cursor()
puis transférer l'objet de connexion de base de données, veuillez effectuer la performance réelle de la bibliothèque
. atteindra le changement de transformation profonde et de modification
1, Nouveau
a ajouté de nouvelles données et de nombreuses données
# 插入一条数据SQL_INSERT_A_ITEM = "INSERT INTO PEOPLE(name,age) VALUES('xag',23);"def insert_a_item(self): """ 插入一条数据 :return: """ try: self.cursor.execute(SQL_INSERT_A_ITEM) self.db.commit() except Exception as e: print('插入数据失败') print(e) self.db.rollback()
pour insérer des données uniques, juste un SQL L'instruction est insérée puis exécutez la méthode d'exécution (SQL) de l'objet pointeur ci-dessus et utilisez enfin la méthode de connexion de base de données thématique () de l'objet envoyé à la base de données
# 插入多条数据SQL,name和age是变量,对应列表SQL_INSERT_MANY_ITEMS = "INSERT INTO PEOPLE (name, age) VALUES(%s, %s)"# 待插入的数据self.datas = [("张三", 23), ("李四", 24), ("王五", 25)]def insert_items(self): """ 插入多条记录 :return: """ try: self.cursor.executemany(SQL_INSERT_MANY_ITEMS, self.datas) self.db.commit() except Exception as e: print("插入数据异常") self.db.rollback()
La méthode exécutante () de l'objet pointeur, l'instruction SQL vient et la liste de variable de position est très importante pour savoir que PymmySQL sera considéré comme une chaîne d'âge ici. Les écoles sont effectuées dans SQL pour effectuer un traitement à la chaîne
2, requête
La requête est divisée en trois étapes, respectivement:
Recevoir des données TUPLE
à travers un objet pointeur
à Voir les résultats
Comme: voir tous les enregistrements de la fiche de données
# 查询所有记录SQL_QUERY_ALL = "SELECT * FROM PEOPLE;"def query(self): """查询数据""" # 查询所有数据 self.cursor.execute(SQL_QUERY_ALL) # 元组数据 rows = self.cursor.fetchall() # 打印结果 for row in rows: id = row[0] name = row[1] age = row[2] print('id:', id, ',name:', name, 'age:', age)
Si vous devez visiter un enregistrement, il vous suffit de modifier l'instruction SQL à atteindre ]
3 mises à jour
# 按id查询SQL_QUERY_WITH_CONDITION = "SELECT * FROM PEOPLE WHERE id={};"# 查询id为5的记录self.cursor.execute(SQL_QUERY_WITH_CONDITION.format(5))
et de nouvelles opérations similaires en tant que nouvelles opérations, les opérations de mise à jour sont également mises à jour par l'objet Pointeur et mettent finalement à jour les données à la base de données avec L'objet de connexion de base de données
# 更新(通过id去更新)SQL_UPDATE = "UPDATE PEOPLE SET name='%s',age=%s WHERE id=%s"def update(self): """ 更新数据 :return: """ sql_update = SQL_UPDATE % ("王五五", 30, 5) print(sql_update) try: self.cursor.execute(sql_update) self.db.commit() except Exception as e: self.db.rollback() print('更新数据异常') print(e)
# 删除(通过id去删除数据)SQL_DELETE = "DELETE FROM PEOPLE WHERE id=%d"def delete(self): """ 删除记录 :return: """ try: # 删除的完整sql sql_del = SQL_DELETE % (5) self.cursor.execute(sql_del) self.db.commit() except Exception as e: # 发生错误时回滚 self.db.rollback() print(e)
def teardown(self): # 释放资源 self.cursor.close() self.db.close()
4, Supprimer
Effacer l'opération par requête, de nouvelles opérations sont similaires, changent simplement l'instruction SQL
enfin, ils doivent enfin Placez les objets de pointeur et libérez les ressources d'objet Connectez la base de données
# 安装依赖包pip3 install sqlalchemy
Four, SQLalchemy
from sqlalchemy import Column, Integer, String, create_enginefrom sqlalchemy.ext.declarative import declarative_base# 基础类Base = declarative_base()# 自定义的表class People(Base): # 表名 __tablename__ = 'people' # 定义字段 id = Column(Integer, primary_key=True) name = Column(String(255)) age = Column(Integer) def __repr__(self): """ 便于打印结果 :return: """ return "<People(id:{},name:{},age:{})".format(self.id, self.name, self.age)
via SQLalc Intégrant la méthode intégrée d'hémy_base () Créer une base de classe de base
, puis personnaliser une sous-classe. de la classe de base, la définition interne et les champs de la fiche de données ci-dessus, les personnes correspondent à
# 创建数据库的引擎实例对象# 数据库名称:xhengine = create_engine("mysql+pymysql://root:数据库密码@localhost:3306/xh", encoding="utf-8", echo=True)
Ensuite, l'adresse de connexion de base de données est assemblée en fonction du nom de la base de données, du nom d'utilisateur, du mot de passe. et serveur, qui est intégré à la méthode CreaTR_Engine () de SQLALCHÉMY pour créer un outil de base de données de spectacle possible. Objet
Enfin, la structure de la table est créée dans la base de données via l'outil de base de données et un objet de session
, Cree_all () le paramètre de test dans la méthode si vous passez si vous passez La vérité, il déterminera si la table de données existe ou non. Si le tableau existe, il ne sera pas recréé
# 创建表结构# checkfirst:判断表是否存在,如果存在,就不重复创建Base.metadata.create_all(engine, checkfirst=True)# 实例化会话self.session = sessionmaker(bind=engine)()
Toutes les préparations complétées et la dépendance au soleilG peut être ajouté à la suppression et à la déduction
1, nouvelle opération
NOUVEAU inclut également l'insertion d'un enregistrement et de plusieurs enregistrements, correspondant à la méthode Add (), add_all () de l'objet Session , la méthode add_all ()
pour une activité nouvellement enregistrée, un seul objet d'une personne est initialisé et ajoutez (instance) et engagement () de l'objet la session supérieure. De deux manières, des données peuvent être insérées dans la fiche de données
def add_item(self): """ 新增 :return: """ # 实例化一个对象 people = People(name='xag', age=23) self.session.add(people) # 提交数据才会生效 self.session.comit()
Si vous devez insérer plusieurs données, il vous suffit d'appeler add_all (liste de données) ]
def add_items(self): """ 新增多条记录 :return: """ datas = [ People(name='张三', age=20), People(name='李四', age=21), People(name='王五', age=22), ] self.session.add_all(datas) self.session.commit()
2, requêtes
La méthode de paramètre spécifie la valeur de champ pour interroger et limiter également les données à Être interrogé par la méthode Cascade () et d'abord ()
def query(self): """ 查询 :return: """ # 查询所有记录 # result = self.session.query(People).all() # 查询name/age两个字段 result = self.session.query(People.name, People.age).all() print(result)
Bien entendu, des filtres peuvent également être utilisés. (Conditions), Filtre
3, mis à jour
# 条件查询resp = self.session.query(People).filter_by(name='xag').first()print(resp)
Activités de mise à jour générale:
Les requêtes de requête sont transmises à l'objet de mise à jour
dans le nouvel objet
Envoyer une modification à l'aide d'objets de session
On peut attribuer que cela peut être utilisé ici. Similaire à 4, Supprimer Effacer le fonctionnement correspondant à la méthode Supprimer (), la même requête d'abord, puis supprimez, soumettez le dernier message de la session Supprimer complètement . Perdre un enregistrement est un exemple: Cet article tourne un affichage de table et une déduction de tables, détaille deux façons de Utilisez la manipulation Python MySQL, dans le projet réel, si seulement des reptiles ou une automatisation simple, utilisez PMYSQL; Sinon, utilisez SQLALCHEMY directement, plus fort.