标签: mysql-python

如何在CentOs 5下安装python2.6-devel软件包

我需要在python2.6下安装mysql-python.mysql-python包需要python2.6-devel包依赖于libpython2.6.so.1.0(64bit)我在网上找到了一些python2.6-devel包,但是找不到libpython2.6服务器架构是x86_64 .

也许有人有这个lib,或者知道我在哪里可以找到它.

感谢帮助)

centos5 x86-64 python-2.6 mysql-python

7
推荐指数
2
解决办法
2万
查看次数

Python,MySQLdb和转义表名?

我可能会遗漏一些明显的东西,但我无法弄清楚我的代码与我在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 mysql-python

7
推荐指数
1
解决办法
3024
查看次数

通过代理python脚本连接到数据库

我有一个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)

mysql mysql-python

7
推荐指数
1
解决办法
1763
查看次数

MySQLdb每个连接有多个事务

是否可以将单个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)

它似乎工作正常,但我只是想仔细检查.

python mysql database database-connection mysql-python

7
推荐指数
1
解决办法
1万
查看次数

在Windows 7上的virtualenv中安装MySQL-python

我正在尝试在我的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)

python pip virtualenv mysql-python python-2.7

7
推荐指数
3
解决办法
7505
查看次数

SQLAlchemy核心连接上下文管理器

我可以为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)

我不需要在上下文管理器出口处检查提交,回滚等.

python sqlalchemy mysql-python

7
推荐指数
1
解决办法
1956
查看次数

错误:命令'cc'失败,退出状态1 - MAC上的MySQLdb安装

我是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我该怎么办?

python mysql-python

7
推荐指数
1
解决办法
9487
查看次数

Python virtualenv pip安装MySQL-Python导致"RuntimeError:超出最大递归深度"

我设置了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)

python pip virtualenv mysql-python

7
推荐指数
1
解决办法
3822
查看次数

MySQLdb存储过程输出参数不起作用

我有一个托管在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代码中发现此警告:

    Compatibility warning: PEP-249 specifies that any modified …
Run Code Online (Sandbox Code Playgroud)

python mysql mysql-python google-cloud-sql

7
推荐指数
1
解决办法
6282
查看次数

从Python多处理访问MySQL连接池

我正在尝试建立一个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)

python connection-pooling mysql-python

7
推荐指数
2
解决办法
2万
查看次数