我对使用关系数据库还很陌生,所以我更喜欢使用一个好的ORM来简化事情。我花时间评估了不同的Python ORM,我认为我需要SQLAlchemy。但是,我已经陷入了精神上的死胡同。
我需要创建一个新表,以与在应用程序的播放器表中创建的播放器的每个实例一起使用。我想我知道如何通过元数据更改表的名称然后调用create函数来创建表,但是我不知道如何将其映射到新的动态类。
有人可以给我一些提示,以帮助我摆脱大脑冻结的困扰吗?这有可能吗?
注意:如果我要问的内容更容易实现,我愿意接受Python中的其他ORM。只需向我展示如何:-)
我们被SQLAlchemy宠坏了。 以下内容直接来自本教程, 非常容易设置和使用。
由于此操作经常进行,因此 该文档在2011年8月转为全面声明式。
设置您的环境(我正在使用SQLite内存数据库进行测试):
>>> from sqlalchemy import create_engine >>> engine = create_engine('sqlite:///:memory:', echo=True) >>> from sqlalchemy import Table, Column, Integer, String, MetaData >>> metadata = MetaData()
定义表:
>>> players_table = Table('players', metadata, ... Column('id', Integer, primary_key=True), ... Column('name', String), ... Column('score', Integer) ... ) >>> metadata.create_all(engine) # create the table
如果打开了日志记录,您将看到SQLAlchemy为您创建的SQL。
定义您的班级:
>>> class Player(object): ... def __init__(self, name, score): ... self.name = name ... self.score = score ... ... def __repr__(self): ... return "<Player('%s','%s')>" % (self.name, self.score)
将类映射到您的表:
>>> from sqlalchemy.orm import mapper >>> mapper(Player, players_table) <Mapper at 0x...; Player>
创建一个玩家:
>>> a_player = Player('monty', 0) >>> a_player.name 'monty' >>> a_player.score 0
就是这样,您现在有了一个玩家表。