使用mysql-python执行不同的查询
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用mysql-python执行不同的查询,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2300字,纯文字阅读大概需要4分钟。
内容图文
![使用mysql-python执行不同的查询](/upload/InfoBanner/zyjiaocheng/912/2b5d054e41884e119c794a548cd07686.jpg)
我正在使用远程数据库将数据导入我的Django proyect的数据库.
在MySQLdb的帮助下,我轻松地创建了一个导入函数,如下所示:
def connect_and_get_data(useful_string):
CONNECTION = MySQLdb.connect(host=..., port=...,
user=..., passwd=..., db=...,
cursorclass=MySQLdb.cursors.DictCursor,
charset = "utf8")
cursor = CONNECTION.cursor()
cursor.execute("SELECT ... FROM ... WHERE ... AND some_field=%s", (useful_string))
result = cursor.fetchall()
cursor.close()
非常满意,按预期工作.
但继续使用代码,我注意到有时我需要再次连接到数据库,以便执行其他不同的查询.
对我来说,第一个想法是合乎逻辑的:
对于我需要的每个查询,定义一个函数,该函数使用给定的查询作为参数调用connect_and_get_data …类似这样:
def get_data_about_first_amazing_topic(useful_string):
query = "SELECT ... FROM ... WHERE ... AND some_field=%s" %(useful_string)
connect_and_get_data(query)
...
def get_data_about_second_amazing_topic(other_useful_string):
query = "SELECT ... FROM ... WHERE ... AND some_field=%s" %(other_useful_string)
connect_and_get_data(query)
...
对connect_and_get_data进行此修改:
def connect_and_get_data(query):
...
cursor.execute(query)
...
正如您可能想象的那样,此解决方案失败了.
阅读mluebke对问题python mysql fetch query的回答
“您正在将参数传递给execute函数,而不是执行python字符串替换”
我立刻明白我错了;但我仍然觉得缺少了一些东西:我尝试了不同的解决方案,但我对所有这些解决方案都非常不满意.
是否有一种“好”的方法来封装我的connect_and_get_data(查询)函数,以便按照我想要的方式为我服务,或者我完全走错了路?
在这种情况下哪些被认为是“最佳做法”?
解决方法:
我想这就是你要找的东西.
def connect_and_get_data(query, data):
...
cursor.execute(query, data)
...
def get_data_about_first_amazing_topic(useful_string):
query = "SELECT ... FROM ... WHERE ... AND some_field=%s"
connect_and_get_data(query, ("one","two","three"))
...
但是,如果您要快速进行多次查询,最好重复使用您的连接,因为连接太多会浪费时间.
...
CONNECTION = MySQLdb.connect(host=..., port=...,
user=..., passwd=..., db=...,
cursorclass=MySQLdb.cursors.DictCursor,
charset = "utf8")
cursor = CONNECTION.cursor()
cursor.execute("SELECT ... FROM ... WHERE ... AND some_field=%s", ("first", "amazing", "topic"))
first_result = cursor.fetchall()
cursor.execute("SELECT ... FROM ... WHERE ... AND some_field=%s", (("first", "amazing", "topic")))
second_result = cursor.fetchall()
cursor.close()
...
这将使您的代码执行得更好.
内容总结
以上是互联网集市为您收集整理的使用mysql-python执行不同的查询全部内容,希望文章能够帮你解决使用mysql-python执行不同的查询所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。