Sqlalchemy automap Demo

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy.orm import Session
from sqlalchemy.ext.automap import automap_base

if __name__ == '__main__':
    engine_str = "mysql+pymysql://user:password@host:port/employees?charset=utf8mb4"
    engine = create_engine(engine_str, echo=True)
    session = Session(engine)
    Base = automap_base()
    Base.prepare(engine, reflect=True)
    
    # 查询测试
    result = session.query(Base.classes.user).all()
    for i in result:
        print(i.id)

    # orm 映射
    User = Base.classes.user
    Customers = Base.classes.Customers
    Orders = Base.classes.Orders

    result = session.query(Customers, Orders).filter_by(cust_id=1000000001).first()
    # print(result)
    for i in result:
        if isinstance(i, Customers):
            print(i.cust_name)
        if isinstance(i, Orders):
            print(i.order_date)

### 使用SQLAlchemy连接PostgreSQL的示例 以下是使用SQLAlchemy连接PostgreSQL数据库的一个完整示例代码。此代码展示了如何创建数据库引擎、执行简单的查询以及关闭连接。 ```python from sqlalchemy import create_engine, text # 创建 PostgreSQL 数据库引擎 engine = create_engine('postgresql+psycopg2://username:password@localhost:5432/mydatabase') # 测试连接并执行简单查询 with engine.connect() as connection: result = connection.execute(text("SELECT * FROM users LIMIT 10")) # 替换表名为实际使用的表名 for row in result: print(row) ``` 在此代码中,`create_engine` 函数用于建立与PostgreSQL数据库的连接[^2]。URL字符串指定了所使用的驱动程序 (`postgresql+psycopg2`)、用户名、密码、主机地址、端口号以及目标数据库名称。通过 `connection.execute()` 方法可以运行任意SQL语句,并获取其结果集。 如果需要进一步扩展功能,比如定义模型类并与ORM一起工作,则可以通过以下方式实现: #### 定义模型类和初始化Session ```python from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy import Column, Integer, String Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) # 初始化会话 Session = sessionmaker(bind=engine) session = Session() ``` 这里我们定义了一个名为 `User` 的模型类来表示用户的表格结构。接着利用 `sessionmaker` 来管理事务和持久化操作[^3]。 最后提醒,在生产环境中应妥善处理敏感信息如密码等配置项,通常建议将其存储于环境变量或其他安全位置而非硬编码至源码之中[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值