我的程序用于购买和出售(假)股票的股票,然后将每笔交易添加到数据库。我正在使用SQLAlchemy来创建数据库和表,到目前为止它工作得很好。但是有一个相当大的问题:因为我在程序中创建表(并且我的程序不断循环),所以每次循环时都会重新创建表。
表:
class Wallet(Base):
__tablename__ = 'wallets'
id = Column(Integer, Sequence('wallet_id_seq'), primary_key=True)
name = Column(String(50))
balance = Column(Integer())
def __repr__(self):
return "<Wallet(name='%s', balance='%s')>" % (self.name, self.balance)
class Transaction(Base):
__tablename__ = 'transactions'
id = Column(Integer, Sequence('transaction_id_seq'), primary_key=True)
stock = Column(String(50))
symbol = Column(String(50))
buy_or_sell = Column(String(50))
price = Column(Integer())
ema = Column(Integer())
shares = Column(Integer())
time = Column(String(50))
def __repr__(self):
return "<Transaction(stock='%s', symbol='%s', buy_or_sell='%s', price='%s', ema='%s', shares='%s', time='%s')>" % (self.stock, self.symbol, self.buy_or_sell, self.price, self.ema, self.shares, self.time)
我尝试将表重新定位到另一个Python文件并导入它们,这样我就可以反复循环主程序而无需重新创建它们。
bin/
main.py
databases.py
__init__.py
但问题仍然存在。我猜这是因为每次导入类Wallet
和Transaction
时都会重新创建表。或者也许只是数据库create_all函数(Base.metadata.create_all(engine)
)仍在main.py中并在每个循环上运行。
如何创建数据库一次,然后每次main.py运行时更新其行/列?
答案 0 :(得分:1)
感谢Jonas回答我的问题。通过在临时内存中创建数据库,每次循环都会删除它。解决方案是使用实际文件。