我需要在python2.6下安装mysql-python.mysql-python包需要python2.6-devel包依赖于libpython2.6.so.1.0(64bit)我在网上找到了一些python2.6-devel包,但是找不到libpython2.6服务器架构是x86_64 .
也许有人有这个lib,或者知道我在哪里可以找到它.
感谢帮助)
我可能会遗漏一些明显的东西,但我无法弄清楚我的代码与我在MySQLdb的在线文档中看到的各种示例有何不同.
我是编程python的新手,对perl更有经验.我想要做的是尽早养成一些好习惯(比如perl我总是从'use strict; use warnings'开始),所以我试图确保我在一个独立的文件中创建可重用的函数( funct.py)以节省我的时间.
我有这个函数用于从表中选择随机行:
def returnRandom(conn,countcol,table,field):
cursor = conn.cursor()
cursor.execute('SELECT MAX(%s) FROM %s',(countcol,table))
maxRow = cursor.fetchone()[0]
cursor.execute("SELECT MIN(%s) FROM %s",(countcol,table))
minRow = cursor.fetchone()[0]
randomId = random.randrange(minRow,maxRow+1,1)
cursor.execute("SELECT ? FROM ? WHERE id >=? LIMIT 1",field,table,randomId)
return cursor.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)
它被称为这样:
msg = funct.returnRandom(conn,"id","testtable","data")
Run Code Online (Sandbox Code Playgroud)
不幸的是它出错了:_mysql_exceptions.ProgrammingError:(1064,"你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在第1行''testtable''附近使用正确的语法")
如果我在执行行上放置testtable代替%s,查询将运行但看起来它运行
SELECT MAX('id') FROM testtable;
Run Code Online (Sandbox Code Playgroud)
当然返回'id'.
考虑到这两者,当它试图执行它们时,它会引用%s条目.我想知道是否有人可以解释我是如何让它停止这样做的,或者我应该如何实际做我想要实现的目标?我希望函数尽可能通用,因此依赖于在调用它时传递给它的数据.
编辑:我应该补充,如果我替换?分数:
....
cursor.execute('SELECT MAX(?) FROM ?',(countcol,table))
File "/usr/lib/pymodules/python2.7/MySQLdb/cursors.py", line 151, in execute
query = query % db.literal(args)
TypeError: not all arguments converted during string formatting
Run Code Online (Sandbox Code Playgroud) 我有一个python脚本,使用python库MySQLdb连接到远程MySQL数据库.它工作正常,但我怎么能通过我在工作时落后的代理连接它.我可以通过ssh中的命令行连接,但是如何让python脚本使用代理设置.在代理配置的MySQLdb命令中似乎没有任何选项.
import MySQLdb as mdb
conn=mdb.connect(host='mysite.com',user='myuser',passwd='mypassword',db='mydb')
cursor = conn.cursor()
Run Code Online (Sandbox Code Playgroud) 是否可以将单个MySQLdb连接用于多个事务而不关闭它们之间的连接?换句话说,这样的事情:
conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")
for i in range(10):
try:
cur = conn.cursor()
query = "DELETE FROM SomeTable WHERE ID = %d" % i
cur.execute(query)
cur.close()
conn.commit()
except Exception:
conn.rollback()
conn.close()
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我只是想仔细检查.
我正在尝试在我的virtualenv(Windows 7 32b + Python 2.7.3)中安装MySQL-python,但不幸的是在命令之后:
pip install MySQL-python
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
Install packages failed: Error occurred when installing package MySQL-python.
The following command was executed:
packaging_tool.py install --build-dir C:\Users\Grzegorz\AppData\Local\Temp\pycharm-packaging3577041299153334552.tmp MySQL-python
The error output of the command:
Downloading/unpacking MySQL-python
Running setup.py egg_info for package MySQL-python
Traceback (most recent call last):
File "<string>", line 16, in <module>
File "C:\Users\Grzegorz\AppData\Local\Temp\pycharm-packaging3577041299153334552.tmp\MySQL-python\setup.py", line 15, in <module>
metadata, options = get_config()
File "setup_windows.py", line 7, in get_config
serverKey = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, options['registry_key'])
WindowsError: [Error 2] Nie mo?na odnale?? …Run Code Online (Sandbox Code Playgroud) 我可以为SQLAlchemy Core连接使用上下文管理器吗?换句话说,是
conn = engine.connect()
conn.execute('SELECT * FROM FOO')
conn.close()
Run Code Online (Sandbox Code Playgroud)
同样的
with engine.connect() as conn:
conn.execute('SELECT * FROM FOO')
Run Code Online (Sandbox Code Playgroud)
我不需要在上下文管理器出口处检查提交,回滚等.
我是Mac的新手,我正在尝试在MAC上安装MySQLdb for Python但是在按照http://www.tutorialspoint.com/python/python_database_access.htm上提到的步骤操作后,我在运行后收到错误
$ python setup.py build
Run Code Online (Sandbox Code Playgroud)
错误:
clang: warning: argument unused during compilation: '-mno-fused-madd'
_mysql.c:44:10: fatal error: 'my_config.h' file not found
#include "my_config.h"
^
1 error generated.
error: command 'cc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)
注意:我的"mysql_config"路径是/ Applications/MAMP/Library/bin/mysql_config我该怎么办?
我设置了virtualenv,然后尝试MySQL-Python使用pip(after activating env)进行安装.我requirements.txt的如下:
MySQL-python==1.2.5
argparse==1.2.1
pymongo==2.6.3
wsgiref==0.1.2
Run Code Online (Sandbox Code Playgroud)
当我运行pip install -r requirement.txt.我得到一些输出的最后一行是:
RuntimeError: maximum recursion depth exceeded
Run Code Online (Sandbox Code Playgroud)
正如帖子中提到的,我甚至运行此命令来升级我的发行版:
easy_install distribute==0.6.28
Run Code Online (Sandbox Code Playgroud)
即使这样也行不通.我的python版本(在env中)是2.7.6,而Machine是Ubuntu 14.04
更新:堆栈跟踪如下:
Downloading/unpacking MySQL-python==1.2.5 (from -r requirements.txt (line 1))
Running setup.py (path:/root/frrole_backend_raw_dump/env/build/MySQL-python/setup.py) egg_info for package MySQL-python
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/root/frrole_backend_raw_dump/env/build/MySQL-python/setup.py", line 21, in <module>
setuptools.setup(**metadata)
File "/usr/lib/python2.7/distutils/core.py", line 112, in setup
_setup_distribution = dist = klass(attrs)
File "build/bdist.linux-x86_64/egg/setuptools/dist.py", line 225, in __init__ …Run Code Online (Sandbox Code Playgroud) 我有一个托管在Google Cloud SQL上的数据库,以及一个用于查询它的python脚本.
我试图调用具有Out参数的存储过程.SP被成功调用,但Out参数的值似乎没有返回到我的python代码.
例如,下面是摘自的例子在这里:
乘法存储过程的定义:
CREATE PROCEDURE multiply(IN pFac1 INT, IN pFac2 INT, OUT pProd INT)
BEGIN
SET pProd := pFac1 * pFac2;
END
Run Code Online (Sandbox Code Playgroud)
如果我从命令行调用SP,如下所示:
CALL multiply(5, 5, @Result)
SELECT @Result
Run Code Online (Sandbox Code Playgroud)
我正确得到了结果:
+---------+
| @Result |
+---------+
| 25 |
+---------+
Run Code Online (Sandbox Code Playgroud)
但是如果我使用MySQLdb包用python代码调用它,就像这样:
args = (5, 5, 0) # 0 is to hold value of the OUT parameter pProd
result = cursor.callproc('multiply', args)
print result
Run Code Online (Sandbox Code Playgroud)
然后我没有得到我的结果元组中的out参数:
(5, 5, 0)
Run Code Online (Sandbox Code Playgroud)
那么,我在这里做错了什么?
更新:刚刚在callproc代码中发现此警告:
Run Code Online (Sandbox Code Playgroud)Compatibility warning: PEP-249 specifies that any modified …
我正在尝试建立一个MySQL连接池,让我的工作进程访问已经建立的池,而不是每次都建立一个新的连接.
如果我应该将数据库光标传递给每个进程,或者是否有其他方法可以做到这一点,我很困惑?MySql.connector不应该自动进行池化吗?当我检查我的日志文件时,会打开和关闭许多连接...每个进程一个.
我的代码看起来像这样:
PATH = "/tmp"
class DB(object):
def __init__(self):
connected = False
while not connected:
try:
cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name = "pool1",
**config.dbconfig)
self.__cnx = cnxpool.get_connection()
except mysql.connector.errors.PoolError:
print("Sleeping.. (Pool Error)")
sleep(5)
except mysql.connector.errors.DatabaseError:
print("Sleeping.. (Database Error)")
sleep(5)
self.__cur = self.__cnx.cursor(cursor_class=MySQLCursorDict)
def execute(self, query):
return self.__cur.execute(query)
def isValidFile(self, name):
return True
def readfile(self, fname):
d = DB()
d.execute("""INSERT INTO users (first_name) VALUES ('michael')""")
def main():
queue = multiprocessing.Queue()
pool = multiprocessing.Pool(None, init, [queue])
for dirpath, dirnames, filenames in os.walk(PATH):
full_path_fnames …Run Code Online (Sandbox Code Playgroud) mysql-python ×10
python ×8
mysql ×3
pip ×2
virtualenv ×2
centos5 ×1
database ×1
python-2.6 ×1
python-2.7 ×1
sqlalchemy ×1
x86-64 ×1