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包含两个主要组件:
- Core(核心):提供了数据库API和SQL表达式语言的基本功能。
- 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
表。我们定义了三个字段:id
、name
和age
。然后创建了一个SQLite引擎,用于连接本地的example.db
。如果数据库文件不存在,它将被创建。通过调用Base.metadata.create_all(engine)
,我们创建了在数据库中还不存在的所有表。
接着我们创建了一个Session类,并实例化它。我们使用这个session添加了一个新的User
例,并提交了这个事务。之后,我们查询了所有用户并打印了它们的信息。最后,我们关闭了session。
请记得将数据库连接字符串'sqlite:///example.db'
替换为你自己数据库的连接信息。如果你使用的是MySQL、PostgreSQL或其他数据库系统,连接字符串将会有所不同,并且可能需要安装额外的数据库驱动程序。