Maison >développement back-end >Tutoriel Python >Configurer Python pour se connecter à Oracle, lire les données Excel et écrire dans la base de données
Condition préalable : une instance unique Oracle a été installée localement et vous pouvez utiliser le développeur plsql pour vous connecter, ou vous pouvez utiliser la chaîne de connexion TNS pour vous connecter à distance au cluster Oracle
Lire Excel et écrire Il existe de nombreuses façons d'entrer dans la base de données. Celle présentée ici consiste à utiliser des pandas pour écrire, ce qui est relativement simple. Il n'est pas nécessaire d'organiser les données après avoir lu Excel
. (recommandation d'apprentissage gratuite : tutoriel vidéo python)
L'ensemble du processus doit être effectué en deux étapes :
1. Configurez Python Connectez-vous à Oracle et testez avec succès
Il existe de nombreux tutoriels sur Internet, mais la plupart d'entre eux ne sont pas si détaillés et n'expliquent pas la différence. entre la connexion à une seule instance et la connexion à un cluster. Ici, nous présentons d'abord comment se connecter à une instance unique Oracle, et la méthode de connexion au cluster Oracle sera ajoutée plus tard.
Version :
windows 10 64 bits
python 3.6.8
cx-Oracle 7.3.0
Processus d'installation :
1 . Utilisez pip pour installer le package qui fait fonctionner Oracle :
pip install cx_Oracle==7.3.0
2. Manuellement. configurer cx_Oracle temporairement Client :
Notez que l'ordinateur ici est en 64 bits, et le client instantané utilisé est également en 64 bits. Pour 32 bits, vous devez le trouver à l'adresse de téléchargement ci-dessous.
2.1. Décompressez le fichier suivant
Lien : https://pan.baidu.com/s/1ARcdK8kgNKfQsNbP5ZEbKg
Code d'extraction : lz0g
Oracle Instant Client Instructions d'utilisation du client :
https://docs.oracle.com/en/database/oracle/oracle-database/19/lnoci/instant-client.html#GUID-6895DB45-97AA -4738-9959-BD677D610186
Adresse de téléchargement du client instantané Oracle :
https://www.oracle.com/database/technologies/instant-client/downloads.html
Panneau de configuration - Système et sécurité - Système
Bien que l'importation de cx_Oracle comporte des lignes ondulées rouges, elles sont généralement considérées comme un échec d'importation, mais vous pouvez l'ignorer ici et exécuter directement le code de test. S'il n'y a pas d'erreur, cela signifie qu'il n'y a pas de problème.
Si aucune donnée n'est trouvée, il se peut que l'utilisateur ne dispose pas de table emp.
import cx_Oracleimport os# 设置环境编码方式,可解决读取数据库中文乱码问题os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'# 用户名/密码@IP:端口/实例名conn = cx_Oracle.connect('kplin/12sss3456@192.168.124.102:1521/ORCL')cursor = conn.cursor()try: sql = 'select * from emp' cursor.execute(sql) ret = cursor.fetchall() print(ret) # cursor.commit()except Exception as e: print(e)finally: cursor.close()
2. Utilisez des pandas pour lire les données Excel et utilisez sqlalchemy pour vous aider à écrire dans la base de données
1. . Installez sqlalchemy , pandas
La version pandas est spécifiée ici car la dernière version de pandas signalera des erreurs étranges lors de la lecture et de l'écriture d'Excel.
pip install pandas==1.1.4pip install sqlalchemy
2. Préparez un tableau Excel, nommé test.xlsx, et écrivez les données de test suivantes
3 , testez la lecture et l'écriture dans la base de données
#!/usr/bin/env python# -*- coding:utf-8 -*-# date: 2021/3/14# filename: excel_to_db# author: kplinimport pandas as pdfrom sqlalchemy import create_enginefrom sqlalchemy import types# conn_string='oracle+cx_oracle://user:pass@host:port/dbname'conn_string='oracle+cx_oracle://KPLIN:654321@192.168.124.6:1521/ORCL'engine = create_engine(conn_string, echo=False)df = pd.read_excel('test.xlsx')# if_exists有三个可选值,'fail':如果存在该表则报错,'append':如果存在该表则将数据追加到列尾,'replace':如果存在该表则替换# df.to_sql('test', con=engine, if_exists='replace')# 按上面这种写入方式name字段将被写成clob字段类型,# 如果我们希望把name改为varchar2类型,怎么做?# 我们可以利用sqlalchemy的types把name指定为varchar2()类型len = df.name.str.len().max()df.to_sql('test', engine, if_exists='replace', dtype={'name': types.VARCHAR(len)})rows = engine.execute("SELECT * FROM TEST").fetchall()print(rows)
Recommandations d'apprentissage gratuites associées : tutoriel python( Vidéo)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!