0
我的程序构建为购买和出售(假)股票股票,然后将每个交易添加到数据库。我使用SQLAlchemy来创建数据库和表,到目前为止,它的工作很好。但是有一个相当大的问题:由于我在程序中创建了表(并且我的程序不断循环),因此每次循环时都会重新创建表。使用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运行时更新其行/列?
''create_all''本身不会删除现有的数据库。您所展示的代码不应执行您所描述的内容,请显示您的循环和其他相关的sqlalchemy调用。 –
是我的完整代码位于https://github.com/Logicmn/PYX/blob/master/PYX.py – Logicman
尝试使用实际文件而不是sqlite内存数据库。我怀疑由于某种原因,数据库在循环之间被删除。 –