【发布时间】:2014-08-18 20:27:45
【问题描述】:
我在我的应用程序的各种类和线程中打开、访问、写入等数据库。我有一个数据库self.run_params["db"],用于在整个应用程序中进行访问。
问题 1:每次访问后我是否应该关闭光标?
问题 2:我的应用程序不断运行并在不同的时间点访问数据库,那么我应该在每次访问后关闭数据库,还是只在应用程序退出时关闭数据库?
import MySQLdb
import warnings
warnings.filterwarnings('ignore')
self.run_params = {}
self.run_params["databaseName"] = "transporterDatabase"
self.run_params["tableName"] = "transporterTable"
## Create databse if not already exist ##
db = MySQLdb.connect(host="localhost",
user="root",
passwd="password")
cur = db.cursor()
cur.execute("CREATE DATABASE IF NOT EXISTS " + self.run_params["databaseName"])
db.close()
## Create table if not already exist ##
self.run_params["db"] = MySQLdb.connect(host="localhost",
user="root",
passwd="password",
db=self.run_params["databaseName"])
cur = self.run_params["db"].cursor()
cur.execute("CREATE TABLE IF NOT EXISTS " + self.run_params["tableName"] + "(jobID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(jobID), location VARCHAR(5000), mode VARCHAR(50), process VARCHAR(10), status VARCHAR(30), title VARCHAR(500), vendorID VARCHAR(100), provider VARCHAR(100), packageType VARCHAR(50), assetUpdate VARCHAR(5), folderSubmission VARCHAR(5), submitTime VARCHAR(50), priority VARCHAR(5));")
cur.close()
######################
## Use database info ##
cur = self.params["db"].cursor()
cur.execute("SELECT * FROM %s order by %s" % (self.params["tableName"], 'priority'))
for row in cur.fetchall() :
jobID = row[0]
indir1 = row[1]
runningMode = row[2]
process = row[3]
status = row[4]
title = row[5]
vendorID = row[6]
provider = row[7]
packageType = row[8]
assetUpdate = row[9]
folderSubmission = row[10]
cur.close()
【问题讨论】:
标签: python mysql database mysql-python