我正在寻找一种方法来调试查询,因为它们被执行,我想知道是否有一种方法让MySQLdb打印出它运行的实际查询,在它完成插入参数之后呢?从文档中,似乎应该有一个Cursor.info()调用,它将提供有关上一次查询运行的信息,但这在我的版本(1.2.2)上不存在.
这似乎是一个显而易见的问题,但对于我所有的搜索,我都找不到答案.提前致谢.
我正在尝试执行以下插入操作:
cursor.execute("""
insert into tree (id,parent_id,level,description,code,start,end)
values (%d,%d,%d,%s,%s,%f,%f)
""", (1,1,1,'abc','def',1,1)
)
Run Code Online (Sandbox Code Playgroud)
我的MYSQL表的结构是:
id int(255),
parent_id int(255),
level int(11),
description varchar(255),
code varchar(255),
start decimal(25,4),
end decimal(25,4)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的程序时,我收到错误
"文件"/usr/lib/pymodules/python2.6/MySQLdb/cursors.py",第151行,执行查询=查询%db.literal(args)
TypeError:%d format:需要一个数字,而不是str"
我不是要求SHOW COLUMNS命令.
我想创建一个与heidisql类似的应用程序,您可以在其中指定SQL查询,并在执行时返回包含表示查询结果的行和列的结果集.结果集中的列名称应与SQL查询中定义的所选列相匹配.
在我的Python程序(使用MySQLdb)中,我的查询只返回行和列结果,但不返回列名.在下面的例子中,列名应为ext,totalsize和filecount.SQL最终将来自程序外部.
我能想到的唯一方法就是编写自己的SQL解析器逻辑来提取选定的列名.
有没有一种简单的方法来获取提供的SQL的列名?接下来我需要知道查询返回了多少列?
# Python
import MySQLdb
#===================================================================
# connect to mysql
#===================================================================
try:
db = MySQLdb.connect(host="myhost", user="myuser", passwd="mypass",db="mydb")
except MySQLdb.Error, e:
print "Error %d: %s" % (e.args[0], e.args[1])
sys.exit (1)
#===================================================================
# query select from table
#===================================================================
cursor = db.cursor ()
cursor.execute ("""\
select ext,
sum(size) as totalsize,
count(*) as filecount
from fileindex
group by ext
order by totalsize desc;
""")
while (1):
row = cursor.fetchone …Run Code Online (Sandbox Code Playgroud) 如果我使用MySQLdb通过Python连接到MySQL-Server.我创建了connection一个cursor这样的:
connection = MySQLdb.connect(...)
cursor = connection.cursor()
# process
Run Code Online (Sandbox Code Playgroud)
当MySQL处理完成后,应该关闭connection.现在我想知道:关闭connection这样做是否足够:
connection.close()
Run Code Online (Sandbox Code Playgroud)
或者我必须关闭第cursor一个然后关闭connection?像这样:
cursor.close()
connection.close()
Run Code Online (Sandbox Code Playgroud) 我已经安装了Python 3.4.0 版,我想用MySQL数据库做一个项目.我下载并尝试安装MySQLdb,但这个版本的Python没有成功.任何建议我如何解决这个问题并正确安装?
我花了好几个小时试图让Django在我的电脑上工作.问题是我无法安装mysql-python包.我正在运行Windows 7 64位.这就是我尝试过的:
我已经用Google搜索了这个问题一千次,所以如果有人能帮助我,我将非常感激.提前致谢!
编辑:我发现了这个:https://pypi.python.org/pypi/MySQL-python/1.2.5.这是否意味着我不能用python 3.3运行Django?如果那里有.exe文件,为什么还要费心去完成所有这些工作呢?
当我想在osx 10.8上安装mysql-python时遇到这个问题,它显示错误,找不到'my_config.h'文件.任何人都可以帮助我,我非常感谢您的贡献,谢谢.
以下是我的运行代码:
sudo easy_install mysql-python
Password:
Searching for mysql-python
Reading http://pypi.python.org/simple/mysql-python/
Reading http://sourceforge.net/projects/mysql-python/
Reading http://sourceforge.net/projects/mysql-python
Best match: MySQL-python 1.2.3
Downloading http://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.3.tar.gz#md5=215eddb6d853f6f4be5b4afc4154292f
Processing MySQL-python-1.2.3.tar.gz
Running MySQL-python-1.2.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-UoZlf7/MySQL-python-1.2.3/egg-dist-tmp-phaQqE
warning: no files found matching 'MANIFEST'
warning: no files found matching 'ChangeLog'
warning: no files found matching 'GPL'
clang: warning: argument unused during compilation: '-mno-fused-madd'
_mysql.c:36:10: fatal error: 'my_config.h' file not found
#include "my_config.h"
^
1 error generated.
error: Setup script exited with error: command 'clang' failed with exit status …Run Code Online (Sandbox Code Playgroud) 我正在尝试使这个Python MYSQL更新语句正确(使用变量):
cursor.execute ("UPDATE tblTableName SET Year=%s" % Year ", Month=%s" % Month ", Day=%s" % Day ", Hour=%s" % Hour ", Minute=%s" Minute "WHERE Server=%s " % ServerID)
Run Code Online (Sandbox Code Playgroud)
我出错的任何想法?
我刚刚使用PyMySQL而不是MySQLdb解决了我的Django 1.3应用程序中的一些问题.我按照本教程介绍了如何进行切换:http://web-eng-help.blogspot.com/2010/09/install-mysql-5-for-python-26-and.html
现在我想知道PyMySQL究竟是什么以及它与MySQLdb的不同之处.
我在localhost上使用它,然后将其上传到某个主机.
是否可以在localhost上使用PyMySQL并托管它们提供的任何内容?由于我已将base.py和introspection.py中的"MySQLdb"更改为"PyMySQL",我是否需要在更改这些文件后将其上传到服务器?或者因为它是Django的文件,因为Django已经上传到那里,这不是很重要吗?
mysql-python ×10
python ×9
mysql ×7
django ×2
database ×1
insertion ×1
pymysql ×1
python-3.4 ×1
python-3.x ×1