有没有办法在Python中使用SQL表作为类或对象?

时间:2016-12-01 21:05:25

标签: python mysql sql python-3.x

我必须为分配绑定数据库和编程,我对代码有所了解,但需要确保我可以将我在mySQL中创建的表用作Python中的类或对象。

示例:我使用SQL创建具有特定地址和邮政编码的房屋数据库。客户说他们住在邮政编码x。然后我的程序应该解析数据库并返回zipcode x中的所有地址。然后理想情况下在SQL中创建一个包含客户端结果的表。

不是确切的任务,但它得到了基本的想法。

1 个答案:

答案 0 :(得分:1)

您正在寻找ORM。见SQLAlchemy。例如:

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


create_session = sessionmaker()
Base = declarative_base()


person_autoincr_seq = Sequence('person_autoincr_seq')

class Person(Base):
    __tablename__ = "person"

    id = Column(
        Integer, 
        person_autoincr_seq,
        server_default=person_autoincr_seq.next_value(), 
        nullable = False, 
        primary_key = True
    )

    name = Column(
        String, 
        nullable = False
    )

    def __init__(self, name,id=None):
        if id is not None:
            self.id = id

        self.name = name

使用db:

import logging as log
from contextlib import closing


engine = sqlalchemy.engine.create_engine(
    "postgresql://testuser:mypassword@127.0.0.1:5432/testdb"
)

create_session.configure(bind=engine)

try:
    with closing(create_session()) as db_session:
        name = db_session.query(Person.name).filter_by(id=5).one()[0]
except Exception:
    log.exception("Something wrong while querying db")