标签: mysql-python

Python:ValueError:索引1处不支持的格式字符'''(0x27)

我正在尝试执行查询以使用MySQL通过Python搜索数据库中的3个表.每次我尝试执行以下字符串作为查询时,它会给我一个关于字符串中连接的错误.

"SELECT fileid FROM files WHERE description LIKE '%" + search + "%' OR filename LIKE '%" + search + "%' OR uploader LIKE '%" + search + "%' ORDER BY fileid DESC"
Run Code Online (Sandbox Code Playgroud)

这是它给我的错误:

ValueError: unsupported format character ''' (0x27) at index 1
Run Code Online (Sandbox Code Playgroud)

如果我删除它要求的字符,那么我还必须删除%,这会阻止查询实际正常工作.我能做些什么来解决这个问题,因为我对Python很陌生.

谢谢,克里斯

python mysql mysql-python

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

如何使用executemany在Python中插入一个字典列表

我目前正在使用MySQL和Python从网上抓取数据.具体来说,我正在抓取表数据并将其插入我的数据库.我当前的解决方案是有效的,但我觉得这是非常低效的,如果我不重写代码,很可能会锁定我的数据库.这是我目前使用的(部分代码):

itemBank = []
for row in rows:
    itemBank.append((tempRow2,tempRow1,tempRow3,tempRow4)) #append data

#itemBank List of dictionaries representing data from each 
row of the table. i.e. 
('Item_Name':"Tomatoes",'Item_Price':"10",'Item_In_Stock':"10",'Item_Max':"30")

for item in itemBank:
    tempDict1 = item[0]
    tempDict2 = item[1]
    tempDict3 = item[2]
    tempDict4 = item[3]

    q = """ INSERT IGNORE INTO
         TABLE1   
        (
           Item_Name,
           Item_Price,
           Item_In_Stock,
           Item_Max,
           Observation_Date
         ) VALUES (
           "{0}",
           "{1}",
           "{2}",
           "{3}",
           "{4}"
           )
        """.format(tempDict1['Item_Name'],tempDict2['Item_Price'],tempDict3['Item_In_Stock'],
                   tempDict4['Item_Max'],getTimeExtra)

    try:
        x.execute(q)
        conn.commit()
    except:
        conn.rollback()
Run Code Online (Sandbox Code Playgroud)

执行表的每一行都很麻烦.我尝试过使用executemany,但我似乎无法弄清楚如何正确访问字典的值.那么,executemany在给定数据结构的情况下,如何使用此处插入数据库?

python mysql mysql-python

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

为mariadb 10 Ubuntu 13.10安装mysqldb python接口时找不到mysql_config

在我安装Mariadb 10之后,Mysql工作台和JPDB客户端都连接并正常工作,所以下一步是用Python编程(使用SQLAlchemy),这似乎需要MySQL-python所以我去更新并得到:"mysql_config not found"I看着"通常的地方",没看到档案......

所以我按照之前关于SO的问题的一些想法 并尝试安装:apt-get install libmysqlclient-dev

让我去了:以下包有未满足的依赖:libmysqlclient-dev:取决于:libmysqlclient18(= 5.5.35-0ubuntu0.13.10.2)但是要安装10.0.10 + maria-1~saucy

哪种打砖墙适合我

python mysql sqlalchemy mysql-python mariadb

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

Mysqlclient 无法通过 pip 安装,在 Ubuntu 中找不到 pkg-config 名称

总的来说,我对 Linux 和 VM 都很陌生。我目前正在尝试在干净的 Ubuntu Jammy 64 (22.4) vbox 实例上安装 mysqlclient。预先运行以下命令:

\n
    sudo add-apt-repository universe\n    sudo apt-get install net-tools -y\n    sudo apt-get install python3 -y\n    sudo apt-get install python3-pip -y\n    pip install pkgconfig\n    sudo apt-get install pkg-config -y\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试运行时pip install mysqlclient出现以下错误:

\n
vagrant@Ctrl-A-EES:~$ pip install mysqlclient\nDefaulting to user installation because normal site-packages is not writeable\nCollecting mysqlclient\n  Using cached mysqlclient-2.2.0.tar.gz (89 kB)\n  Installing build dependencies ... done\n  Getting requirements to build wheel ... error\n  error: subprocess-exited-with-error\n\n  \xc3\x97 …
Run Code Online (Sandbox Code Playgroud)

pip mysql-python ubuntu-22.04 libmysqlclient

23
推荐指数
3
解决办法
4万
查看次数

python mysqldb一个连接的多个游标

当您有一个连接对象时,是否可以为该单个连接创建多个游标并同时使用这些游标执行查询?或者每个光标是否等待前一个光标完成查询?

connection type: database=MySQLdb.connect(...)
cursor:          curs=database.cursor()
querying:        curs.execute("query")
Run Code Online (Sandbox Code Playgroud)

python mysql-python python-2.7

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

错误:安装脚本退出并显示错误:命令'gcc'失败,退出状态为1

当我尝试在Fedora 14中的Python 2.6下安装MySQL-python-1.2.3时,我收到以下错误.

默认情况下Fedora 14附带Python 2.7,我正在使用Python 2.6运行的项目,所以我无法将Python从2.6升级到2.7.

_mysql.c:35:23: fatal error: my_config.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

完整的错误消息如下

[root@localhost MySQL-python-1.2.2]# python setup.py build
running build
running build_py
creating build
creating build/lib.linux-i686-2.6
copying _mysql_exceptions.py -> build/lib.linux-i686-2.6
creating build/lib.linux-i686-2.6/MySQLdb
copying MySQLdb/__init__.py -> build/lib.linux-i686-2.6/MySQLdb
copying MySQLdb/converters.py -> build/lib.linux-i686-2.6/MySQLdb
copying MySQLdb/connections.py -> build/lib.linux-i686-2.6/MySQLdb
copying MySQLdb/cursors.py -> build/lib.linux-i686-2.6/MySQLdb
copying MySQLdb/release.py -> build/lib.linux-i686-2.6/MySQLdb
copying MySQLdb/times.py -> build/lib.linux-i686-2.6/MySQLdb
creating build/lib.linux-i686-2.6/MySQLdb/constants
copying MySQLdb/constants/__init__.py -> build/lib.linux-i686-2.6/MySQLdb/constants
copying MySQLdb/constants/CR.py -> build/lib.linux-i686-2.6/MySQLdb/constants …
Run Code Online (Sandbox Code Playgroud)

python mysql mysql-python

19
推荐指数
3
解决办法
3万
查看次数

为什么MySQLdb Connection上下文管理器不关闭游标?

MySQLdb Connections有一个基本的上下文管理器,可以在enter上创建一个游标,在退出时回退或提交,并且隐式不会抑制异常.来自连接源:

def __enter__(self):
    if self.get_autocommit():
        self.query("BEGIN")
    return self.cursor()

def __exit__(self, exc, value, tb):
    if exc:
        self.rollback()
    else:
        self.commit()
Run Code Online (Sandbox Code Playgroud)

那么,有没有人知道为什么光标在退出时没有关闭?


起初,我认为这是因为关闭游标没有做任何事情,并且游标只有一个关闭方法来参考Python DB API(参见本答案的评论).但是,事实是关闭光标会烧掉剩余的结果集(如果有),并禁用光标.从光标源:

def close(self):
    """Close the cursor. No further queries will be possible."""
    if not self.connection: return
    while self.nextset(): pass
    self.connection = None
Run Code Online (Sandbox Code Playgroud)

在退出处关闭光标会很容易,所以我不得不假设它没有故意完成.另一方面,我们可以看到,当一个游标被删除时,无论如何它都会被关闭,所以我猜垃圾收集器最终会绕过它.我对Python中的垃圾收集知之甚少.

def __del__(self):
    self.close()
    self.errorhandler = None
    self._result = None
Run Code Online (Sandbox Code Playgroud)

另一个猜测是,您可能希望在with块之后重新使用光标.但我想不出你为什么需要这样做的任何理由.难道你不能总是在其上下文中使用游标,并且只为下一个事务使用单独的上下文吗?

要非常清楚,这个例子显然没有意义:

with conn as cursor:
    cursor.execute(select_stmt)

rows = …
Run Code Online (Sandbox Code Playgroud)

python mysql mysql-python contextmanager

19
推荐指数
1
解决办法
2016
查看次数

安装mysql-python时出错:找不到-lssl的库

我在安装mysql-python时遇到问题.创建一个新的virtualenv,并在安装mysql-python时...这里是错误消息:

(env)$ pip install mysql-python
Collecting mysql-python
...

clang -bundle -undefined dynamic_lookup -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk build/temp.macosx-10.12-x86_64-2.7/_mysql.o -L/usr /local/Cellar/mysql/5.7.16/lib -lmysqlclient -lssl -lcrypto -o build/lib.macosx-10.12-x86_64-2.7/_mysql.so
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1
Run Code Online (Sandbox Code Playgroud)

使用自制软件,我安装了:

  • libressl
  • OpenSSL的
  • openssl@1.1
  • MySQL的

已经尝试brew link但酿造拒绝这样做.

操作系统是MacOS Sierra.

有人可以帮忙吗?谢谢!

homebrew pip virtualenv mysql-python

19
推荐指数
5
解决办法
9517
查看次数

python mysql.connector DictCursor?

在Python中,mysqldb我可以将游标声明为字典光标,如下所示:

cursor = db.cursor(MySQLdb.cursors.DictCursor) 
Run Code Online (Sandbox Code Playgroud)

这将使我能够cursor按名称引用循环中的列,如下所示:

for row in cursor:   # Using the cursor as iterator 
    city = row["city"]
    state = row["state"]
Run Code Online (Sandbox Code Playgroud)

是否可以使用此MySQL连接器创建字典光标? http://dev.mysql.com/doc/connector-python/en/connector-python-example-cursor-select.html

他们的例子只返回一个元组.

我想MySQL的创造者最终会为我们做这件事吗?

python mysql mysql-python mysql-connector-python

18
推荐指数
4
解决办法
3万
查看次数

使用PIP在Windows上编译mysql-python

所以我的Windows 7笔记本电脑上安装了Python 2.7和setuptools.我还安装了Visual Studio 2008 Express和带有dev工具的MySQL.

我试图通过像pip安装mysql-python:

pip install mysql-python
Run Code Online (Sandbox Code Playgroud)

我收到链接错误:

   Creating library build\temp.win32-2.7\Release\_mysql.lib and object build\temp.win32-2.7\Release\_mysql.exp

_mysql.obj : error LNK2019: unresolved external symbol _mysql_error@4 referenced in function __mysql_Exception

_mysql.obj : error LNK2019: unresolved external symbol _mysql_errno@4 referenced in function __mysql_Exception

_mysql.obj : error LNK2019: unresolved external symbol _mysql_server_init@12 referenced in function __mysql_server_init

_mysql.obj : error LNK2019: unresolved external symbol _mysql_server_end@0 referenced in function __mysql_server_end

_mysql.obj : error LNK2019: unresolved external symbol _mysql_thread_safe@0 referenced in function __mysql_thread_safe

_mysql.obj : error …
Run Code Online (Sandbox Code Playgroud)

python pip mysql-python visual-studio-2008

18
推荐指数
2
解决办法
3985
查看次数