我对使用关系数据库相当陌生,所以我更喜欢使用好的ORM来简化事情.我花了一些时间判断不同的Python Orm,我认为SQLAlChemy就是我所需要的.然而,我已经走到了精神上的死胡同.

我需要创建一个新表来配合我在应用程序的播放器表中创建的每个播放器实例.我想我知道如何通过元数据更改表名,然后调用CREATE函数来创建表,但是我不知道如何将其映射到新的动态类.

有人能给我一些建议来帮助我克服大脑冻结吗?这可能吗?

注意:如果我所要求的更容易实现,我愿意接受Python中的其他ORM.告诉我怎么做:-)

推荐答案

We are spoiled by SQLAlchemy.
What follows below is taken directly from the tutorial,
and is really easy to setup and get working.

And because it is done so often,
the documentation moved to full declarative in Aug 2011.

设置您的环境(我使用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

如果您打开了日志(log)记录,您将看到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

就这样,你现在有了一个球员表.

Database相关问答推荐

在MongoDB的树形 struct 中更新具有给定id的元素

在使用FT.AGGREGATE聚合数据时,如何在Redis上解析ISO 8601时间?

如何限制报表中返回的行数?

重新运行后未找到 Taipy 场景

如何在 C# 控制台应用程序中执行 CMD 命令?

如何开始使用 SQLCipher for android?

在事务提交之前传递 JMS 消息

SQL Server 2008如何同步不同服务器中的数据库?

SQLite3 的动态类型

nvarchar (50) 与 nvarchar (max) 的含义

customer客户表的数据库 struct ,每个客户有很多订单,每个订单有很多商品

在服务器上排序还是在客户端排序?

如何通过 PHP 和 Linux 使用 pdo 连接到 mssql?

在内存中创建 SQLite 数据库

如何在 DynamoDB 中创建 UUID?

如何一次插入1000行

SQL Server 自动备份

Sqlite 和 Python - 使用 fetchone() 返回字典?

复式记账的关系数据模型

如何在 SQL Server 中创建数据库的别名