我使用mySQL在sqlalchemy中使用Python设置了两个表。他们看起来像这样:
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
class Test(Base):
__tablename__ = 'test'
id = Column(Integer, primary_key=True)
questions = relationship('Question', cascade='all,delete', backref='test', uselist=True)
class Question(Base):
__tablename__ = 'question'
testID = Column(Integer, ForeignKey('test.id', ondelete='CASCADE'))
sequence = Column(Integer, primary_key=True)
text = Column(String(500))
现在,当我运行我的代码并设置表时,它们看起来像这样:
testID |序列|文本
1 | 1 |文本
1 | 2 |文本
1 | 3 |文本
1 | 4 |文本
2 | 5 |文本
2 | 6 |文本
2 | 7 |文本
但我希望他们看起来像这样:
testID |序列|文本
1 | 1 |文本
1 | 2 |文本
1 | 3 |文本
1 | 4 |文本
2 | 1 |文本
2 | 2 |文本
2 | 3 |文本
我知道序列是自动递增的,因为它是第一个int主键,但我只希望它自动递增,直到有一个新的testID。
我可以离开它并稍后对它们进行排序,但我真的想将它设置为每个新testID的序列重置。我对sqlAlchemy很新,所以我可能会遗漏一些明显的东西。任何帮助表示赞赏。感谢。
答案 0 :(得分:0)
我在获得following response from another forum之后能够解决这个问题。
MySQL的自动增量功能严格来说是一个整数 稳步增长。如果你想要一个循环的整数,你就是这样 需要在Python端自己维护这个数字。 此外,您还想要设置复合主键 题。订购清单扩展是一种快速获取的方式 您正在寻找的每次收集计数效果(适用于 Python方面,如果你把它推得太远,它会被绊倒):
list 1 list 2 list 3
- item a - item w - item k
- item b - item x - item l
- item c - item y
- item z