亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用數據庫查詢而不是燒瓶中的列表填充下拉框

如何使用數據庫查詢而不是燒瓶中的列表填充下拉框

阿晨1998 2022-11-01 17:12:42
這可能是一個非常簡單的問題,但作為新手,我不得不在這里問抱歉,因為在玩了很多之后我還沒有找到答案。我正在使用帶有 python 食物類型列表的燒瓶,以允許用戶將食物輸入到表單中,并使用驗證器對其進行驗證,以確保該項目在列表中。然后將表單中輸入的食物存儲在數據庫表中。我希望用來自預定義食物類型的數據庫的 sql 查詢替換此列表方法,同時使用 SQLAlchemy,因為它在應用程序的其他地方使用。代碼的簡化版本如下: -#db connection is already setup and working OK in another part of the appDB_URL = 'postgresql+psycopg2://{user}:{pw}@{url}:{port}/{db}'.format(user=POSTGRES_USER, pw=POSTGRES_PW, url=POSTGRES_URL, port=POSTGRES_PORT, db=POSTGRES_DB)app.config['SQLALCHEMY_DATABASE_URI'] = DB_URLdb = SQLAlchemy(app)#example of the listeaten = ['bread', 'crackers', 'ham', 'bacon']#where the 'food_word' variable gets defined from an input and validatedfood_word_1 = StringField('add the food type you have eaten here:', validators=[Optional(), AnyOf(eaten)])我嘗試用eaten =  db.execute('SELECT food_name FROM food_type')(table & column) 替換列表,但沒有成功。我不確定是否需要在 model.py 中為此 Select/GET 操作創建某種類/方法,或者甚至使用 pandas(我在應用程序中也有)之類的東西來完成這項工作。任何指導表示贊賞!
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

SQLAlchemy 是一個對象關系映射器。它有助于在沒有 SQL 查詢的情況下與數據庫交互。它是對數據庫的抽象。所以你不應該在這里寫 SQL 查詢。相反,您必須從 db.Model 創建一個繼承的類。如下所示。


class FoodType(db.Model):

    id = db.Column(db.Integer, primary_key=True)

    food_name = db.Column(db.String(120), unique=True, nullable=False)


def __repr__(self):

    return '<User %r>' % self.food_name

然后為了獲取數據,你必須調用查詢函數,


 db.query.all()

 # or

 db.query.filter_by()

結果將是一個列表。


如果你直接使用 postgres,而不使用 SQLAlchemy,那么 SQL 查詢將是這樣的,


>>> conn = psycopg2.connect(DATABASE_URL)

>>> cur = conn.cursor()

>>> cur.execute('SELECT food_name FROM food_type')

>>> cur.fetchall()

[['bread'], ['crackers'], ['ham'], ['bacon']]

如果要轉換為單個列表,


eaten = [i[0] for i in db.fetchall()]


查看完整回答
反對 回復 2022-11-01
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號