Python 将列表项作为单独的条目插入数据库
我有一个输入字段,基本上是一个逗号分隔的字符串(即类似于“deniscm、toms、peters”)。这些信息通过AJAX发送到我的Python处理程序SaveQueryPage。我想做的是将这些信息解析为一个列表,然后将每个条目插入到我的数据库中。我的代码如下,但不幸的是它不能工作。有什么建议吗 Python代码:Python 将列表项作为单独的条目插入数据库,python,google-app-engine,Python,Google App Engine,我有一个输入字段,基本上是一个逗号分隔的字符串(即类似于“deniscm、toms、peters”)。这些信息通过AJAX发送到我的Python处理程序SaveQueryPage。我想做的是将这些信息解析为一个列表,然后将每个条目插入到我的数据库中。我的代码如下,但不幸的是它不能工作。有什么建议吗 Python代码: class SaveQueryPage(webapp2.RequestHandler): def post(self): user = users.get_curren
class SaveQueryPage(webapp2.RequestHandler):
def post(self):
user = users.get_current_user()
user_nickname = user.nickname()
query_name = self.request.get('queryName')
query_collab = self.request.get('queryCollab')
query_collaborators = re.split(r'\s*[,]\s*', query_collab.strip())
query_collaborators = query_collaborators.append(user_nickname)
query_collaborators = filter(None, query_collaborators)
conn = rdbms.connect(instance=_INSTANCE_NAME, database='queryInfo')
cursor = conn.cursor()
cursor.execute('INSERT INTO queries (userNickname, queryName) VALUES (%s, %s)', (user_nickname, query_name))
conn.commit()
for item in query_collaborators:
cursor = conn.cursor()
cursor.execute('INSERT INTO collaborators (queryName, userNickname) VALUES (%s, %s)', (query_name, item))
conn.commit()
conn.close()
我终于设法让它工作起来了。看起来正则表达式将列表中的项转换为unicode格式,这是在我添加一些日志时才发现的。我还在列表中添加字符串时出错。谢谢你的指点!下面的代码现在适用于我:
class SaveQueryPage(webapp2.RequestHandler):
def post(self):
user = users.get_current_user()
user_nickname = user.nickname()
user_email = user.email()
query_name = self.request.get('queryName')
query_description = self.request.get('queryDescription')
query_collab = self.request.get('queryCollab')
logging.info('Data read for query_collab is %s', query_collab)
query_collab_re = re.split(r'\s*[,;]\s*', query_collab.strip())
logging.info('Data read for query_collab_re is %s', query_collab_re)
query_collab_decode = []
for item in query_collab_re:
item = str(item)
query_collab_decode.append(item)
logging.info('Data read for query_collab_decode is %s', query_collab_decode)
query_collab_decode.append(user_nickname)
logging.info('Data read for query_collab_append is %s', query_collab_decode)
query_collab_filter = filter(None, query_collab_decode)
logging.info('Data read for query_collab_filter is %s', query_collab_filter)
query_value = self.request.get('queryValue') # query_value
date_created = datetime.today()
date_lastupdated = datetime.today()
active_flag = "true"
random_id = random.randint(1000000000000, 9999999999999)
unique_query_id = user_nickname + "_" + str(random_id)
conn = rdbms.connect(instance=_INSTANCE_NAME, database='userPrefs')
cursor = conn.cursor()
cursor.execute('INSERT INTO queries (userNickname, queryName, queryDescription, queryValue, dateCreated, dateLastUpdated, activeFlag, uniqueId) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', (user_nickname, query_name, query_description, query_value, date_created, date_lastupdated, active_flag, unique_query_id))
conn.commit()
try:
for item in query_collab_filter:
cursor = conn.cursor()
cursor.execute('INSERT INTO collaborators (uniqueId, userNickname) VALUES (%s, %s)', (unique_query_id, item))
conn.commit()
except:
logging.error('There was an error inserting the values into the collaborators table. query_collaborators =' + str(query_collaborators))
conn.close()
我终于设法让它工作起来了。看起来正则表达式将列表中的项转换为unicode格式,这是在我添加一些日志时才发现的。我还在列表中添加字符串时出错。谢谢你的指点!下面的代码现在适用于我:
class SaveQueryPage(webapp2.RequestHandler):
def post(self):
user = users.get_current_user()
user_nickname = user.nickname()
user_email = user.email()
query_name = self.request.get('queryName')
query_description = self.request.get('queryDescription')
query_collab = self.request.get('queryCollab')
logging.info('Data read for query_collab is %s', query_collab)
query_collab_re = re.split(r'\s*[,;]\s*', query_collab.strip())
logging.info('Data read for query_collab_re is %s', query_collab_re)
query_collab_decode = []
for item in query_collab_re:
item = str(item)
query_collab_decode.append(item)
logging.info('Data read for query_collab_decode is %s', query_collab_decode)
query_collab_decode.append(user_nickname)
logging.info('Data read for query_collab_append is %s', query_collab_decode)
query_collab_filter = filter(None, query_collab_decode)
logging.info('Data read for query_collab_filter is %s', query_collab_filter)
query_value = self.request.get('queryValue') # query_value
date_created = datetime.today()
date_lastupdated = datetime.today()
active_flag = "true"
random_id = random.randint(1000000000000, 9999999999999)
unique_query_id = user_nickname + "_" + str(random_id)
conn = rdbms.connect(instance=_INSTANCE_NAME, database='userPrefs')
cursor = conn.cursor()
cursor.execute('INSERT INTO queries (userNickname, queryName, queryDescription, queryValue, dateCreated, dateLastUpdated, activeFlag, uniqueId) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)', (user_nickname, query_name, query_description, query_value, date_created, date_lastupdated, active_flag, unique_query_id))
conn.commit()
try:
for item in query_collab_filter:
cursor = conn.cursor()
cursor.execute('INSERT INTO collaborators (uniqueId, userNickname) VALUES (%s, %s)', (unique_query_id, item))
conn.commit()
except:
logging.error('There was an error inserting the values into the collaborators table. query_collaborators =' + str(query_collaborators))
conn.close()
什么不起作用?你有错误吗?它不会给出预期的结果吗?一个查询有协作者,但是,没有链接,你使用的是RDBMS,我假设是Google SQL云存储?这没有什么意义。而且('somemysql QUERY%s')%(var)也不太安全。我确实在使用谷歌云SQL-因为它是一个内部应用程序,我在现阶段还不太担心安全性。我从queries表中省略了一些属性,以便更容易地消化信息,但是查询和协作者之间存在着适当的关系。我在日志中看到的错误如下:“NoneType”对象不可回溯(最近一次调用last):File“/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/weba这是指哪一行?什么不起作用?你有错误吗?它不会给出预期的结果吗?一个查询有协作者,但是,没有链接,你使用的是RDBMS,我假设是Google SQL云存储?这没有什么意义。而且('somemysql QUERY%s')%(var)也不太安全。我确实在使用谷歌云SQL-因为它是一个内部应用程序,我在现阶段还不太担心安全性。我从queries表中省略了一些属性,以便更容易地消化信息,但是查询和协作者之间存在着适当的关系。我在日志中看到的错误如下:“NoneType”对象不可回溯(最近一次调用last):File“/base/python27_runtime/python27_lib/versions/third_party/webapp2-2.3/weba这是指哪一行?使用而不是随机谢谢!那就更有意义了!将尝试实现该功能。使用而不是随机。谢谢!那就更有意义了!我们将努力实现这一目标。