我正在嘗試使用 sqlalchemy 使用 python 創建一個基本的 CRUD 應用程式。它只是一個在終端中運行的虛擬通訊錄。
我已經設法創建它并使其成功運行,但我遇到了以下問題:
每當我運行其中一個 sqlalchemy 函式來訪問資料庫時,我都會得到結果,但也會收到如下所示的內容:
2022-11-14 19:45:37,694 INFO sqlalchemy.engine.Engine BEGIN (implicit)
2022-11-14 19:45:37,698 INFO sqlalchemy.engine.Engine SELECT count(*) AS count_1
FROM (SELECT contacts.name AS contacts_name
FROM contacts) AS anon_1
2022-11-14 19:45:37,698 INFO sqlalchemy.engine.Engine [generated in 0.00020s] ()
我不希望在使用該應用程式時向用戶顯示此內容!
我如何洗掉它以便用戶看不到它?
我的 sqlalchemy 模型如下所示:
from sqlalchemy import Column, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class Contact(Base):
__tablename__ = "contacts"
name = Column("name", String, primary_key=True)
number = Column("number", String)
email = Column("email", String)
def __init__(self, name, number, email):
self.name = name
self.number = number
self.email = email
def __repr__(self):
return f"\n{self.name.title()}: \n\tNumber: {self.number}\n\tEmail: {self.email}"
engine = create_engine("sqlite:///contacts.db", echo=True)
Base.metadata.create_all(bind=engine)
Session = sessionmaker(bind=engine)
session = Session()
我的 sqlalchemy 函式如下所示:
from utils.SQLDB import Contact, session
def add_contact(name, number, email):
"""Adds a new contact to the database."""
contact = Contact(name.title(), number, email)
session.add(contact)
session.commit()
print(f"{contact.name.title()} has been added!")
def delete_contact(name):
"""Deletes a specific contact from the database."""
session.query(Contact).filter(Contact.name == name).delete()
session.commit()
print(f"{name} has been deleted.")
def show_all_contacts():
"""Shows all contacts in alphabetical order."""
results = session.query(Contact).order_by("name").all()
for person in results:
print(person)
def search_contact(name):
"""Searches for contacts who have the given string combination in their name."""
result = session.query(Contact).filter(
Contact.name.like(f"%{name}%")).all()
for contact in result:
print(contact)
def update_contact(name, new_name=Contact.name, new_number=Contact.number, new_email=Contact.email):
"""Updates, name, numbers and email adresses."""
session.query(Contact).filter(Contact.name == name).update(
{Contact.name: new_name, Contact.number: new_number, Contact.email: new_email})
session.commit()
print(f"{Contact.name} has been updated.")
def count_contacts():
"""Return the total number of contacts in the virtual contact book."""
count = session.query(Contact.name).count()
return count
我是 sqlalchemy 的新手,我仍在努力解決它(我真的是一個全新的編碼)所以任何幫助將不勝感激 - 特別是如果它可以“簡化”一點幫助我理解它有點容易!
uj5u.com熱心網友回復:
嘗試設定echo成False這樣:
engine = create_engine("sqlite:///contacts.db", echo=False)
sqlalchemy.create_engine.params.echo
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/535353.html
