标签: pymysql

如何在“with”上下文管理器中模拟 sqlalchemy 执行输出

我正在尝试为用于sqlalchemy连接 MySQL 的 python 脚本编写单元测试。

我的函数如下所示:

def check_if_table_exists(db):
    with db.connect() as cursor:
        table_exists = cursor.execute(f"SHOW TABLES LIKE '{PRIMARY_TABLE_NAME}';")
        if not table_exists.rowcount:
            cursor.execute(f"CREATE TABLE...
Run Code Online (Sandbox Code Playgroud)

我找不到任何关于如何首先模拟的资源db.connect(),反过来也需要对其进行execute模拟,以便我可以测试不同的table_exists场景。也有可能我的代码根本不适合正确的单元测试,我需要首先使用游标对象调用该函数。

作为参考,db是 的输出sqlalchemy.create_engine

TLDR 我需要帮助开始单元测试,以应对我为SHOW语句取回行的情况和没有取回行的情况。

python testing unit-testing sqlalchemy pymysql

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

ImportError:没有名为'MySQLdb'的模块 - django + mysql

这个问题涉及:django 1.5.1 with python 3.3和mysql 5.6.12

想要使用Django运行Mysql.如果配置了所有内容,甚至数据库都存在用户权限.尝试syncdb时出错:

ImportError: No module named 'MySQLdb'
Run Code Online (Sandbox Code Playgroud)

显然,Mysql-Lib缺少python.从petehunt/PyMySQL下载了主版本.尝试"python setup.py安装".说:

ImportError: No module named 'constants'
Run Code Online (Sandbox Code Playgroud)

下载了另一个版本.来自这里的tarball .运行"python setup.py install".似乎工作,试图运行syncdb命令"python manage.py syncdb".仍然:

ImportError: No module named 'MySQLdb'
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?提前致谢.

mysql django pymysql

0
推荐指数
1
解决办法
8376
查看次数

用python中的字符串中的单个反斜杠替换双反斜杠

我知道这个主题的变体已经在别处讨论过,但其他线程都没有帮助.

我想将一个字符串从python移交给sql.然而,可能会发生撇号(')出现在字符串中.我想用反斜杠逃脱它们.

sql = "update tf_data set authors=\'"+(', '.join(authors).replace("\'","\\\'"))+"\' where tf_data_id="+str(tf_data_id)+";"
Run Code Online (Sandbox Code Playgroud)

但是,这总是会\\'在我的字符串中给出.因此,反斜杠本身被转义,并且sql语句不起作用.

有人可以帮助我,或者让我替代我这样做的方式吗?谢谢

python str-replace pymysql

0
推荐指数
1
解决办法
2672
查看次数

AttributeError:“NoneType”对象没有使用 pymysql 的属性“encoding”

import pymysql\n\nconn = pymysql.connect(host=\'127.0.0.1\', port=3306, user=\'root\',\n    passwd=\'123456\',db=\'home\', charset="utf-8")\n\ncursor = conn.cursor()\ncursor.execute("""create table job_list(job varchar(30) , people varchar(30) , catagory varchar(30)  , place varchar(30), publish varchar(30)) """)\n\ntry:\n    cursor.execute("""INSERT  INTO  job_list(job,people,catagory,place,publish) VALUES (%s, %s, %s, %s, %s)""",\n        ["\xe7\xae\x97\xe6\xb3\x95\xe5\xb7\xa5\xe7\xa8\x8b\xe5\xb8\x88", "2018\xe6\xaf\x95\xe4\xb8\x9a\xe7\x94\x9f", "\xe7\xa0\x94\xe5\x8f\x91", "\xe9\x9b\x85\xe5\x8a\xa0\xe8\xbe\xbe", "2018-03-28"])\n    conn.commit()\nexcept pymysql.Error as e:\n    print(e)\n\ncursor.close()\nconn.close()\n
Run Code Online (Sandbox Code Playgroud)\n\n

设置了字符集但没有用,如何将中文插入mysql

\n

python-3.x pymysql

0
推荐指数
1
解决办法
6357
查看次数

MySQL Python 客户端得到 1045 (28000): Access denied for user 'root'@'localhost'

pymysql和 都会发生此错误mysql-connector-python。但不适用于 MySQL shell。MySQL shell 可以通过mysql -u root -p正常登录。

错误看起来像:

In [1]: import mysql.connector

In [2]: mydb = mysql.connector.connect(
   ...:   host="localhost",
   ...:   user="root",
   ...:   passwd="password"
   ...: )

ProgrammingError: 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

或者

In [8]: import pymysql.cursors

In [9]: connection = pymysql.connect(host='localhost',
   ...:                              user='root',
   ...:                              password='password',
   ...:                              db='db',
   ...:                              cursorclass=pymysql.cursors.DictCursor)

...
OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
Run Code Online (Sandbox Code Playgroud)

Python 3.7 版,在 Mac OSX 10.14 上运行。MySQL 版本 …

python mysql pymysql

0
推荐指数
1
解决办法
2116
查看次数

"errorMessage": "lambda_handler() 接受 0 个位置参数,但给出了 2 个",

此代码在我的机器上运行正常,但在 AWS Lambda 中出现错误:

import pymysql

dbhost = 'database.ap-south-1.rds.amazonaws.com'
dbuser = 'admin'
dbpass = 'admin123'
dbname = 'classicmodels'
connection = pymysql.connect(host=dbhost, user=dbuser, password=dbpass, database=dbname)

def lambda_handler():
  cursor = connection.cursor()
  cursor.execute('SELECT * FROM Persons')
  rows = cursor.fetchall()
  for row in rows:
    print ("{0} {1} {2}".format(row[0], row[1], row[2]))

lambda_handler()
Run Code Online (Sandbox Code Playgroud)
{
"errorMessage": "lambda_handler() takes 0 positional arguments but 2 were given",
"errorType": "TypeError",
"requestId": "fb790715-91f1-4f7a-961f-b83485d23b68",
"stackTrace": ["  File \"/var/runtime/awslambdaric/bootstrap.py\", line 149, in handle_event_request\n    response = request_handler(event, lambda_context)\n"
]
}

Function Logs
START RequestId: …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services pymysql aws-lambda

0
推荐指数
1
解决办法
2820
查看次数