在Python中,我们可以使用SQLAlchemy模块操作Oracle数据库。SQLAlchemy是一个Python SQL工具包和对象关系映射器(ORM),它提供了一种抽象层,使得我们可以在不同的数据库之间切换,而不需要更改代码。以下是如何在Python中使用SQLAlchemy操作Oracle数据库的完整使用攻略,包括连接数据库、创建表、插入数据、查询数据、更新数据和删除数据等步骤。同时,提供两个示例以便更好理解如何在Python中使用SQLAlchemy操作Oracle数据库。
步骤1:安装SQLAlchemy模块
在Python中,我们需要安装SQLAlchemy模块才能操作Oracle数据库。以下是安装SQLAlchemy模块的基本语法:
!pip install sqlalchemy
在上面的语法中,我们使用pip命令安装SQLAlchemy模块。
步骤2:连接Oracle数据库
在Python中,我们可以使用SQLAlchemy模块连接Oracle数据库。以下是连接Oracle数据库的基本语法:
from sqlalchemy import create_engine
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
在上面的语法中,我们使用create_engine
方法连接到Oracle数据库。在create_engine
方法中,我们需要指定用户名、密码、主机名、端口和服务名。
步骤3:创建表
在Python中,我们可以使用SQLAlchemy模块创建表。以下是创建表的基本语法:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
在上面的语法中,我们使用Column
方法定义列的类型和属性。在Column
方法中,我们需要指定列的类型和属性,例如,Integer
表示整数类型,String
表示字符串类型。在Column
方法中,我们还可以指定列的属性,例如,primary_key=True
表示该列是主键。
然后,我们使用declarative_base
方法创建一个基类。接着,我们定义一个类,该类继承自基类,并定义表的结构。在表的结构中,我们使用__tablename__
属性指定表的名称。最后,使用metadata.create_all
方法创建表。
步骤4:插入数据
在Python中,我们可以使用SQLAlchemy模块插入数据到Oracle数据库中。以下是插入数据的基本语法:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
# 插入数据
Session = sessionmaker(bind=engine)
session = Session()
employee = Employee(name='John', age=30)
session.add(employee)
session.commit()
在上面的语法中,我们使用sessionmaker
方法创建一个会话类。接着,我们使用session
方法创建一个会话对象。然后,我们创建一个Employee
对象,并使用add
方法将它添加到会话中。最后,我们使用commit
方法提交事务。
步骤5:查询数据
在Python中,我们可以使用SQLAlchemy模块查询Oracle数据库中的数据。以下是查询数据的基本语法:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
# 查询数据
Session = sessionmaker(bind=engine)
session = Session()
employees = session.query(Employee).all()
for employee in employees:
print(employee.id, employee.name, employee.age)
在上面的语法中,我们使用query
方法查询数据。在query
方法中,我们指定要查询的表。然后,我们使用all
方法获取所有数据。最后,我们使用for
循环遍历所有数据,并打印出每个员工的ID、姓名和年龄。
步骤6:更新数据
在Python中,我们可以使用SQLAlchemy模块更新Oracle数据库中的数据。以下是更新数据的基本语法:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
# 更新数据
Session = sessionmaker(bind=engine)
session = Session()
employee = session.query(Employee).filter_by(id=1).first()
employee.age = 35
session.commit()
在上面的语法中,我们使用query
方法查询要更新的数据。在query
方法中,我们使用filter_by
方法指定要更新的数据的条件。然后,我们使用first
方法获取第一条符合条件的数据。接着,我们更新数据的属性。最后,我们使用commit
方法提交事务。
步骤7:删除数据
在Python中,我们可以使用SQLAlchemy模块删除Oracle数据库中的数据。以下是删除数据的基本语法:
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
# 删除数据
Session = sessionmaker(bind=engine)
session = Session()
employee = session.query(Employee).filter_by(id=1).first()
session.delete(employee)
session.commit()
在上面的语法中,我们使用query
方法查询要删除的数据。在query
方法中,我们使用filter_by
方法指定要删除的数据的条件。然后,我们使用first
方法获取第一条符合条件的数据。接着,我们使用delete
方法删除数据。最后,我们使用commit
方法提交事务。
示例1
在这个示例中,我们使用SQLAlchemy模块连接Oracle数据库,并创建一个employees
表。然后,我们插入一条数据到employees
表中。接着,我们查询所有数据。
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Employee(Base):
__tablename__ = 'employees'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
Base.metadata.create_all(engine)
# 插入数据
Session = sessionmaker(bind=engine)
session = Session()
employee = Employee(name='John', age=30)
session.add(employee)
session.commit()
# 查询数据
employees = session.query(Employee).all()
for employee in employees:
print(employee.id, employee.name, employee.age)
在上面的代码中,我们首先使用create_engine
方法连接到Oracle数据库。然后,我们使用declarative_base
方法创建一个基类。接着,我们定义一个类,该类继承自基类,并定义表的结构。在表的结构中,我们使用Column
方法定义列的类型和属性。最后,使用metadata.create_all
方法创建表。
然后,我们使用sessionmaker
方法创建一个会话类。接着,我们使用session
方法创建一个会话对象。然后,我们创建一个Employee
对象,并使用add
方法将它添加到会话中。最后,我们使用commit
方法提交事务。
接着,我们使用query
方法查询数据。在query
方法中,我们指定要查询的表。然后,我们使用all
方法获取所有数据。最后,我们使用for
循环遍历所有数据,并打印出每个员工的ID、姓名和年龄。
示例2
在这个示例中,我们使用SQLAlchemy模块连接Oracle数据库,并创建一个orders
表。然后,我们插入两条数据到orders
表中。接着,我们查询所有数据,并更新一条数据和删除一条数据。
from sqlalchemy import create_engine, Column, Integer, String, Date
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接Oracle数据库
engine = create_engine('oracle://username:password@host:port/service_name')
# 创建表
Base = declarative_base()
class Order(Base):
__tablename__ = 'orders'
order_id = Column(Integer, primary_key=True)
customer_name = Column(String)
order_date = Column(Date)
Base.metadata.create_all(engine)
# 插入数据
Session = sessionmaker(bind=engine)
session = Session()
order1 = Order(customer_name='John', order_date='2023-05-12')
order2 = Order(customer_name='Mary', order_date='2023-05-13')
session.add_all([order1, order2])
session.commit()
# 查询数据
orders = session.query(Order).all()
for order in orders:
print(order.order_id, order.customer_name, order.order_date)
# 更新数据
order = session.query(Order).filter_by(order_id=1).first()
order.order_date = '2023-05-14'
session.commit()
# 删除数据
order = session.query(Order).filter_by(order_id=2).first()
session.delete(order)
session.commit()
在上面的代码中,我们首先使用create_engine
方法连接到Oracle数据库。然后,我们使用declarative_base
方法创建一个基类。接着,我们定义一个类,该类继承自基类,并定义表的结构。在表的结构中,我们使用Column
方法定义列的类型和属性。最后,使用metadata.create_all
方法创建表。
然后,我们使用sessionmaker
方法创建一个会话类。接着,我们使用session
方法创建一个会话对象。然后,我们创建两个Order
对象,并使用add_all
方法将它们添加到会话中。最后,我们使用commit
方法提交事务。
接着,我们使用query
方法查询数据。在query
方法中,我们指定要查询的表。然后,我们使用all
方法获取所有数据。最后,我们使用for
循环遍历所有数据,并打印出每个订单的ID、客户姓名和订单日期。
然后,我们使用query
方法查询要更新的数据。在query
方法中,我们使用filter_by
方法指定要更新的数据的条件。然后,我们使用first
方法获取第一条符合条件的数据。接着,我们更新数据的属性。最后,我们使用commit
方法提交事务。
最后,我们使用query
方法查询要删除的数据。在query
方法中,我们使用filter_by
方法指定要删除的数据的条件。然后,我们使用first
方法获取第一条符合条件的数据。接着,我们使用delete
方法删除数据。最后,我们使用commit
方法提交事务。
以上是如何在Python中使用SQLAlchemy操作Oracle数据库的完整使用攻略,包括连接数据库、创建表、插入数据、查询数据、更新数据和删除数据等步骤。同时,提供了两个示例以便更好理解如何在Python中使用SQLAlchemy操作Oracle数据库。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何在Python中使用SQLAlchemy操作Oracle数据库? - Python技术站