【发布时间】:2021-08-31 18:52:37
【问题描述】:
我在所有输出上都使用断言,这是一个好习惯吗?这段代码也干净易读吗?谢谢!
#!/usr/bin/env python
import pyodbc
import secret as credentials
class DatabaseManager:
def __init__(self):
self.database_user_name = credentials.Secret.mssql["database_username"]
self.database_password = credentials.Secret.mssql["database_password"]
self.database_server_name = credentials.Secret.mssql["database_server"]
self.database_name = credentials.Secret.mssql["database_name"]
self.database_string = 'DRIVER={ODBC Driver 17 for SQL Server};SERVER=' \
+ self.database_server_name + ';DATABASE=' \
+ self.database_name + ';UID=' \
+ self.database_user_name + ';PWD=' \
+ self.database_password \
+ ';Encrypt=yes;TrustServerCertificate=no;Connection Timeout=30;'
self.database_connection = pyodbc.connect(self.database_string)
class AccountManager:
def __init__(self, account_email, account_name):
self.account_email = account_email
self.account_name = account_name
def get_account_by_email(self):
db_init = DatabaseManager()
db_cursor = db_init.database_connection.cursor()
db_cursor.execute(""" SELECT [account_email] FROM [dbo].[account]
WHERE account_email = ? """, self.account_email)
row: object = db_cursor.fetchone()
# verify and return
assert isinstance(row, object)
print(row)
def get_account_by_name(self):
db_init = DatabaseManager()
db_cursor = db_init.database_connection.cursor()
db_cursor.execute(""" SELECT [account_name] FROM [dbo].[account]
WHERE account_name = ? """, self.account_name)
row: object = db_cursor.fetchone()
# verify and return
assert isinstance(row, object)
print(row)
class ContractManager:
def __init__(self):
pass
【问题讨论】:
-
isinstance(anything, object)始终为 True,因此您的断言毫无用处。 -
另请注意,您不会从这些函数返回任何内容。您正在检查您刚刚打印出来的对象的类型。
-
我正在打印它,因为我正在测试它——它从数据库返回一个值。从数据库返回的值为 str 将包括 int。
-
标签: python coding-style