我得到:
sqlite3.OperationalError: unknown database schema
conn = sqlite3.connect('tick.db', detect_types=sqlite3.PARSE_DECLTYPES, timeout=20,isolation_level=None)
# conn1 = sqlite3.connect('nifty_tick.db', detect_types=sqlite3.PARSE_DECLTYPES, timeout=20,isolation_level=None)
c = conn.cursor()
# c1 = conn1.cursor()
c.execute('PRAGMA journal_mode=wal')
def tick_entry1(inst,timestamp,ltp, bid, ask):
if inst == 12335874:
c.execute('INSERT INTO niftyfut (timestamp, close, bid, ask) VALUES (?,?,?,?)',
(timestamp, ltp, bid, ask))
def on_ticks(ws, ticks):
global c, conn
for t in ticks:
if t['instrument_token'] == 12335874:
timestamp = t['timestamp']
ltp = t['last_price']
inst = t['instrument_token']
try:
tick_entry1(inst,timestamp,ltp)
except:
# print('problem with db')
pass
c.execute('PRAGMA schema.wal_checkpoint(FULL);')
我试过:
c.execute('PRAGMA schema.wal_checkpoint(FULL);')
以及
c.execute('PRAGMA schema.wal_checkpoint(FULL)')
短暂性脑缺血发作
----编辑----
我刚试过:
c.execute('PRAGMA wal_checkpoint(FULL)')
好像有用。现在想知道是否应该在开始时执行以下操作:
c.execute("PRAGMA wal_autocheckpoint = 0")
消息说没有数据库具有名为schema的模式。你知道吗
在文档中,模式是斜体的,这表示它是符号而不是实际值,并将替换为适当的值,该值用于区分附加的数据库。你知道吗
例如,如果您使用
那你可以用
检查附加的数据库。你知道吗
初始数据库的模式是main,但不是必需的,因为如果没有提供模式,它是默认的。你知道吗
因此
c.execute('PRAGMA wal_checkpoint(FULL)')
起作用的原因(正如c.execute('PRAGMA main.wal_checkpoint(FULL)')
)。i、 e.有效的方法是相同的。你知道吗如果使用
c.execute("PRAGMA wal_autocheckpoint = 0")
,则必须管理所有检查点,因为自动检查点将被关闭(请注意,关闭所有数据库连接检查点)。你知道吗您不妨考虑:
我建议不要使用
PRAGMA wal_autocheckpoint = 0
autocheckpointing并不妨碍强制检查点,除非强制检查点发生在自动检查点之后(并且所有页面都被写入),并且没有任何更新,那么它将什么也不做(优雅地),否则会有更多的页面被写入数据库文件。你知道吗相关问题 更多 >
编程相关推荐