[英]Peewee is creating the table with just the ID no other fields/columns are created
[英]With Peewee, how to check if an SQLite file has been created vs filled without creating a table. If I import, it seems the table is created?
首先我想檢查文件是否存在,我使用了這個 os.path:
def check_db_exist():
try:
file_exists = exists('games.db')
if file_exists:
file_size = os.path.getsize('games.db')
if file_size > 3000:
return True, file_size
else:
return False, 'too small'
else:
return False, 'does not exist'
except:
return False, 'error'
我的模型有一個單獨的文件,並創建了數據庫。 我擔心的是,如果我為數據庫導入 class,它會實例化 sql 文件。 此外,pywebview 在顯示我的 html 時擦除所有變量。 如果我在加載頁面時運行此過程,那么我將無法訪問 true/false sqlite 存在的變量。
db = SqliteDatabase('games.db')
class Game(Model):
game = CharField()
exe = CharField()
path = CharField()
longpath = CharField()
i_d = IntegerField()
class Meta:
database = db
這將創建表,因此檢查文件是否存在是無用的。 然后,如果我取消注釋數據庫 gest 創建的文件中的第一行,否則我的所有 db. 變量不可用。 我一定是缺少一個非常明顯的 function 來解決我的問題。
# db = SqliteDatabase('games.db')
def add_game(game, exe, path, longpath, i_d):
try:
Game.create(game=game, exe=exe, path=path, longpath=longpath, i_d=i_d)
except:
pass
def loop_insert(lib):
db.connect()
for i in lib[0]:
add_game(i.name, i.exe, i.path, i.longpath, i.id)
db.close()
def initial_retrieve():
db.connect()
vals = ''
for games in Game.select():
val = js.Import.javascript(str(games.game), str(games.exe), str(games.path), games.i_d)
vals = vals + val
storage = vals
db.close()
return storage
我應該只在文件中的不同位置導入文件嗎? 什么時候我覺得舒服? 我沒有經常看到,所以我不想在格式上不正確。
編輯:編輯:也許更像這樣?
def db():
db = SqliteDatabase('games.db')
return db
class Game(Model):
game = CharField()
exe = CharField()
path = CharField()
文件 2:
from sqlmodel import db, Game
def add_game(game, exe, path, longpath, i_d):
try:
Game.create(game=game, exe=exe, path=path, longpath=longpath, i_d=i_d)
except:
pass
def loop_insert(lib):
db.connect()
for i in lib[0]:
add_game(i.name, i.exe, i.path, i.longpath, i.id)
db.close()
我不確定這是否回答了您的問題,因為它似乎涉及多個進程和/或處理器,但為了檢查數據庫文件是否存在,我使用了以下內容:
DATABASE = 'dbfile.db'
if os.path.isfile(DATABASE) is False:
# Create the database file here
pass
else:
# connect to database here
db.connect()
我建議使用 sqlite 的user_version
pragma:
db = SqliteDatabase('/path/to/db.db')
version = db.pragma('user_version')
if not version: # Assume does not exist/newly-created.
# do whatever.
db.pragma('user_version', 1) # Set user version.
來自 reddit:我:對於最初的挑戰,我想知道文件是否存在是有原因的。 也許它的處所有缺陷,我會解釋,你可以在那里填寫。
該腳本將在我無法訪問的多台機器上運行。 在首次用例的入口點,我將從遠程位置移植數據,如果腳本是第一次在該機器上運行,那么它會進入與重復打開不同的工作流程。
類似於抓取所有 pc 程序與從最后一個 session 追加和讀取。您建議如何快速了解該過程是否從以前的 session 開始和完成。
檢查 sqlite 文件是否最直觀,然后調整為字節大小。 點點滴滴
他們:這是個好問題!
How would you suggest quickly understanding if that process
has started and finished from a previous session.
如果您的程序在新系統上做的第一件事是下載某種夾具數據,那么我的方法是正常加載 DB 文件,讓 Peewee 確保表存在,然后執行 no-clause SELECT在其中之一上(通過 model,或者如果需要,直接通過連接在數據庫上。)如果它是空的(沒有結果),那么您知道您在一個新系統上,您需要進行遠程調用. 如果你得到結果(你不需要知道它們是什么)那么你就知道你不是在一個新的系統上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.