常见python库(四)数据库

Psycopg

Psycopg是一个用于在Python中连接和操作PostgreSQL数据库的库。它提供了一个易于使用的接口,可以执行SQL查询、事务操作等。

以下是一个使用Psycopg库的代码示例,用于连接到PostgreSQL数据库、执行查询和插入数据:

import psycopg2

# 1. 连接到数据库
conn = psycopg2.connect(
    host="localhost",
    database="your_database",
    user="your_username",
    password="your_password"
)

# 2. 创建游标对象
cur = conn.cursor()

# 3. 执行查询
cur.execute("SELECT * FROM your_table")
rows = cur.fetchall()  # 获取所有查询结果

# 遍历结果并打印
for row in rows:
    print(row)

# 4. 插入数据
cur.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", ("value1", "value2"))

# 提交事务
conn.commit()

# 5. 关闭游标和连接
cur.close()
conn.close()

上述代码首先使用psycopg2.connect函数连接到PostgreSQL数据库,需要提供相应的主机名、数据库名、用户名和密码。然后,使用conn.cursor方法创建一个游标对象。接下来,使用游标对象的execute方法执行SQL查询,并使用fetchall方法获取所有查询结果。然后可以遍历结果并进行打印。

在代码的插入数据部分,使用execute方法执行插入语句,并通过占位符%s传递参数值。最后,使用commit方法提交事务,确保数据的持久化。

最后,使用close方法关闭游标和数据库连接。

SQLAlchemy

SQLAlchemy是Python编程语言的一个库,它提供了一整套工具,用于操作关系型数据库。它结合了对象关系映射(ORM)技术和传统的SQL数据库操作。ORM是一种技术,允许你以面向对象的方式来处理数据库表和Python类之间的映射,而不需要编写SQL代码。

SQLAlchemy包含两个主要组件:

  1. Core(核心):提供了数据库API和SQL表达式语言的基本功能。
  2. ORM(对象关系映射):建立在Core的基础上,允许开发者以面向对象的方法操作数据库。

安装SQLAlchemy

你可以通过pip来安装SQLAlchemy:

pip install SQLAlchemy

###代码示例

下面是一个使用SQLAlchemy ORM组件定义类并将其映射到数据库表的示例:

from sqlalchemy import create_engine, Column,, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 定义映射到数据库的Base类
Base = declarative_base()

# 定义一个User类继承自Base
class User(Base):
    __tablename__ = 'users'  # 数据库表名
    
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

#到数据库的连接引擎
engine = create_engine('sqlite:///example.db')

#所有未创建的表
Base.metadata.create_all(engine)

#Session类
Session = sessionmaker(bind=engine)

#Session实例
session = Session()

#新用户对象
new_user = User(name='John Doe', age=30)

# 添加到session
session.add(new_user)

# 提交事务
session.commit()

# 查询所有用户
users =.query(User).all()
for user in users:
    print(f'User {user.name} is {user.age} years old')

# 关闭session
session.close()

在这个示例中,我们首先定义了一个User类,并指定了它映射到数据库中的users表。我们定义了三个字段:idnameage。然后创建了一个SQLite引擎,用于连接本地的example.db。如果数据库文件不存在,它将被创建。通过调用Base.metadata.create_all(engine),我们创建了在数据库中还不存在的所有表。

接着我们创建了一个Session类,并实例化它。我们使用这个session添加了一个新的User例,并提交了这个事务。之后,我们查询了所有用户并打印了它们的信息。最后,我们关闭了session。

请记得将数据库连接字符串'sqlite:///example.db'替换为你自己数据库的连接信息。如果你使用的是MySQL、PostgreSQL或其他数据库系统,连接字符串将会有所不同,并且可能需要安装额外的数据库驱动程序。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值