我正在做一个Python项目,我必须从数据库中查找和检索数据。
我尝试过创建一个类,在其中声明连接并进行查询,这是到目前为止我所没有的。
import MySQLdb
dbc =("localhost","root","1234","users")
class sql:
db = MySQLdb.connect(dbc[0],dbc[1],dbc[2],dbc[3])
cursor = db.cursor()
def query(self,sql):
sql.cursor.execute(sql)
return sql.cursor.fetchone()
def rows(self):
return sql.cursor.rowcount
sqlI = sql()
print(sqlI.query("SELECT `current_points` FROM `users` WHERE `nick` = 'username';"))
因此,主要问题是该变量db
和cursor
不能从同一类的其他def
/函数中调用。我想要得到的是一个精细的查询,在这里我可以进行查询并检索其内容。这将总结我的代码,因此我应该这样做。
我通常使用psycopg2 / postgres,但这是我经常使用的基本数据库类,以Python的SQLite为例:
import sqlite3
class Database:
def __init__(self, name):
self._conn = sqlite3.connect(name)
self._cursor = self._conn.cursor()
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.close()
@property
def connection(self):
return self._conn
@property
def cursor(self):
return self._cursor
def commit(self):
self.connection.commit()
def close(self, commit=True):
if commit:
self.commit()
self.connection.close()
def execute(self, sql, params=None):
self.cursor.execute(sql, params or ())
def fetchall(self):
return self.cursor.fetchall()
def fetchone(self):
return self.cursor.fetchone()
def query(self, sql, params=None):
self.cursor.execute(sql, params or ())
return self.fetchall()
这将使您Database
可以正常使用类db = Database('db_file.sqlite)
或在with
语句中使用该类:
with Database('db_file.sqlite') as db:
# do stuff
with
语句退出时,连接将自动提交并关闭。
然后,您可以封装经常在方法中执行的特定查询,并使它们易于访问。例如,如果您正在处理交易记录,则可以使用一种方法来按日期获取它们:
def transactions_by_date(self, date):
sql = "SELECT * FROM transactions WHERE transaction_date = ?"
return self.query(sql, (date,))
这是一些示例代码,我们在其中创建一个表,添加一些数据,然后将其读出:
with Database('my_db.sqlite') as db:
db.execute('CREATE TABLE comments(pkey INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR, comment_body VARCHAR, date_posted TIMESTAMP)')
db.execute('INSERT INTO comments (username, comment_body, date_posted) VALUES (?, ?, current_date)', ('tom', 'this is a comment'))
comments = db.query('SELECT * FROM comments')
print(comments)
我希望这有帮助!
我正在尝试为我的dao类自带一个sessionfactory,但它不起作用 这也是我的服务班 请在这方面提供一点帮助。我已经浪费了一整天的时间来寻找解决办法。提前致谢
我有一个数据集 ,其中包含从Salesforce导入的48列: 当试图以文本文件的形式写入时,可能会删除分隔符,或者只能将单个列写入文本文件的错误, 当试图以CSV的形式写入时,则不支持Null数据类型异常。
问题内容: 我有以下代码: 并且在编译时给出错误: 我如何使用它来执行查询并检索其值。 谢谢 PS:与数据库的连接正在工作..(如果我取消注释该行,它将打印“ connected”)。 问题答案: 这是非常糟糕的代码-书面上没有用。您有很多工作要做。 我建议您研究一下并丢弃代码:
我对spring中的@Autowired注释有问题。我有一个RestController类: 接口: CategoryManagerImpl类: 每次编译代码时,我都会遇到一个异常: Bun当我创建ApplicationContext并尝试获取categoryManagerImpl bean时,没有问题: 有人知道哪里会有问题吗? 谢谢 添加了 配置类: 堆栈跟踪:
问题内容: Java没有对象的生存期,这由进行管理。而且,如果我使用某些IO类而不关闭它,或者使用某些IO类,这是否会导致资源泄漏?换句话说,将由垃圾收集器AFAIK收集并销毁IO对象,垃圾收集器仅用于内存。例如: 问题答案: 是的,你是对的。 垃圾回收会释放Java堆(内存),但是close()会释放用于打开文件的OS资源(在大多数系统上打开文件的数量受到限制),并确保真正写入数据。 但是许多类