我想用方法创建一个类,这样我就不必创建多个函数。 下面是我的代码,我想使用两个方法获取一个类。方法1:SQL查询,方法2:SQL插入。
非常感谢任何小费。
Stefan
def dbconnect():
dbconn = pymysql.connect(host='192.168.1.2', port=3307, user='username', passwd='password', db='dbname')
try:
cur = dbconn.cursor()
sqlQuery = "select * from data"
sqlQuerygetlast = "SELECT * FROM data ORDER BY id DESC LIMIT 1"
sqlQuerygetlast10 = "SELECT * FROM data ORDER BY id DESC LIMIT 10"
cur.execute(sqlQuerygetlast10)
rows = cur.fetchall()
for row in rows:
print(row)
except Exception as e:
print("Exeception occured:{}".format(e))
finally:
#dbconn.commit()
dbconn.close()
我的目标是从代码中调用方法,即查询select语句。
非常感谢 斯蒂芬
答案 0 :(得分:1)
我猜你的意思是你不想创建多个连接?
然后您应将其实现为Context manager:
class DB:
def __init__(self):
self.dbconn = None
def get_last(self, n)
try:
cur = self.dbconn.cursor()
sqlQuerygetlast = "SELECT * FROM data ORDER BY id DESC LIMIT {}".format(n)
cur.execute(sqlQuerygetlast)
rows = cur.fetchall()
for row in rows:
print(row)
except Exception as e:
print("Exeception occured:{}".format(e))
finally:
# self.dbconn.commit()
def some_other_method(self):
self.dbconn.do_something()
def __enter__(self):
self.dbconn = pymysql.connect(
host='192.168.1.2',
port=3307,
user='username',
passwd='password',
db='dbname'
)
return self
def __exit__(self, exc_type, exc_value, exc_traceback):
dbconn.close()
return True
并按以下方式使用它:
with DB() as db:
db.get_last(1)
db.get_last(10)
db.some_other_method()
这将仅创建一个数据库连接实例,并在完成后关闭。
答案 1 :(得分:0)
在Python中编写类非常简单。
这是一个如何编写经典Person类以及如何使用属性和方法的示例。
具体来说,演示文稿方法还利用了 name 属性。
在此示例中,您可以轻松继续并构建数据库类实现:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def presentation(self):
print("Hello my name is " + self.name)
p1 = Person("John", 36)
p1.presentation()
请记住,在类的所有方法中,您都必须将保留关键字self作为参数(显然,还可能需要其他任何参数)。