python - Python程序中发生错误(1046, 'No database selected'),但mysql工作台中没有发生错误

标签 python mysql database error-handling mysql-workbench

我在使用python更新mysql数据库中的记录时遇到了一个奇怪的问题。也就是说,错误 1046 是由 python 组抛出的,但相同的 mysql 语句在 mysql workbench 中运行得很好。

这是mysql语句,

UPDATE r resultant_data d
        INNER JOIN
    (SELECT 
        uid,
            SUBSTRING_INDEX(GROUP_CONCAT(login_type
                ORDER BY device_ct DESC), ',', 1) devices
    FROM
        (SELECT 
        uid, login_type, COUNT(*) AS device_ct
    FROM
       login_record l
    WHERE
        l.ctime > 1451577600
            AND l.ctime < 1454256000
    GROUP BY uid , login_type
    ORDER BY device_ct DESC) a
    GROUP BY uid) ct ON d.uid = ct.uid AND d.month_id = 1 
SET 
    d.device = ct.devices
;

我的任务是根据login_record表将一个用户在一个月内最常用的登录设备更新到表resultant_data中。所以第一步(最里面的查询):创建一个表来显示 uid、login_device、登录时间(即 device_ct)。第二步(第二个最里面的查询):根据device_ct,找出与最靠近的device_ct关联的uid和login_type。第三步(更新层):匹配uid并将记录更新到resultant_data中。

那么问题是出在python上吗?还是mysql语句?我怀疑问题是由于“inner join”命令造成的(尽管它在 mysql workbench_ 中工作正常。我之前也遇到过类似的问题,我通过将“inner join”重写为“where uid in (select....)”来解决这个问题.但是对于这个任务,有没有办法重写或重组语句?

非常感谢。

最佳答案

我不认为你的问题是你的SQL。确保在 python 中建立数据库连接时包含表所在的数据库(又名架构名称):

db_connection = mysql.connector.connect(
    host="192.168.1.101",
    user="myusername",
    passwd="mypassword",
    database="database_table_lives_in"
)

关于python - Python程序中发生错误(1046, 'No database selected'),但mysql工作台中没有发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38494938/

相关文章:

python - 找不到 CSS 404 谷歌应用引擎

python - 在 Rstudio 中安装 Tensorflow?

php - 如何根据评分和发布时间找到最佳帖子?

mysql - 如果是,则带有详细信息的 bool 属性?

php - 如何避免在 php mysql 中插入相同的主键和值

python - 在 Python 中将字符串拆分为字典

python - 在 Python 中从 PDF 中提取页面大小

php - 我在 mysql_fetch_assoc() 中遇到错误

java - HQL - 比较日期和对象

c# - 这个 C# .NET WinForms 应用程序我做错了什么?