标签: pymysql

PyMySQL在一个查询中有不同的更新?

所以我有一个python脚本,它通过大约350,000个数据对象,并且根据一些测试,它需要更新一行代表MySQl数据库中每个对象.我也使用pymysql,因为我遇到的问题最少,特别是在发送大型选择查询时(select语句where column IN (....)包含可能包含100,000+以上的值).

由于每行的每次更新可能不同,因此每个更新语句都不同.例如,对于一行,我们可能想要更新,first_name但对于另一行,我们希望first_name保持不变,我们想要更新last_name.

这就是为什么我不想使用cursor.executemany()接受一个通用更新语句的方法,然后你给它提供值,但是正如我所提到的,每次更新都是不同的,所以有一个通用的更新语句对我的情况不起作用.我也不想通过网络单独发送超过350,000个更新语句.无论如何,我可以将所有更新语句打包在一起并立即发送它们吗?

我尝试在一个查询中使用它们并使用该cursor.execute()方法但它似乎并不更新所有行.

python mysql pymysql

13
推荐指数
2
解决办法
983
查看次数

Python mysql(使用pymysql)自动重新连接

我不确定这是否可行,但我正在寻找一种在连接丢失时重新连接到mysql数据库的方法.所有连接都保存在gevent队列中,但我认为这无关紧要.我敢肯定,如果我花一些时间,我可以想出一种方法来重新连接到数据库.但是我看了一下pymysql代码,我看到Connection类中有一个'ping'方法,我不确定如何使用它.

该方法看起来会在第一次重新连接,但之后又将重新连接标志再次切换为False?我可以使用这种方法,还是有不同的方法来建立连接丢失?即使不是pymysql,人们如何处理,数据库服务器崩溃并且不得不重新建立与mysql服务器的连接?

def ping(self, reconnect=True):
    ''' Check if the server is alive '''
    if self.socket is None:
        if reconnect:
            self._connect()
            reconnect = False
        else:
            raise Error("Already closed")
    try:
        self._execute_command(COM_PING, "")
        return self._read_ok_packet()
    except Exception:
        if reconnect:
            self._connect()
            return self.ping(False)
        else:
            raise
Run Code Online (Sandbox Code Playgroud)

python mysql database-connection connection-pooling pymysql

12
推荐指数
2
解决办法
9837
查看次数

aiohttp + sqlalchemy:在回滚无效事务之前无法重新连接

我使用的是aiohttpsqlalchemy,和我创建了一个单身,帮助我,当我需要的SQLAlchemy(代码如下)的实例连接.不幸的是,每隔一段时间我就会收到以下错误(我通过重启服务器"解决"):

12月11日09:35:29 ip-xxx-xxx-xxx-xxx gunicorn [16513]:sqlalchemy.exc.StatementError:(sqlalchemy.exc.InvalidRequestError)在无效事务回滚之前无法重新连接[SQL:'.. .\nFROM ... \nWHERE ... =%(username_1)s \n LIMIT%(param_1)s'] [参数:[{}]]```

有没有办法修复当前的代码?谢谢 :)

CONNECTION_DETAILS = {
    'driver': 'pymysql',
    'dialect': 'mysql',
    'host': os.environ.get('HOST'),
    'port': 3306,
    'user': 'master',
    'password': os.environ.get('PASSWORD'),
    'database': 'ourdb',
    'charset': 'utf8'
}

_instance = None

def __new__(cls, *args, **kwargs):
    if not cls._instance:
        con_str = '{dialect}+{driver}://{user}:{password}@' \
                  '{host}:{port}/{database}?charset={charset}'\
            .format(**cls.CONNECTION_DETAILS)
        try:
            engine = sqlalchemy.create_engine(con_str)

            Session = scoped_session(sessionmaker(bind=engine))
            session = Session()  # Create the ORM handle
        except sqlalchemy.exc.OperationalError:
            logger.exception('Establishing database connection error.')

        cls._instance = super().__new__(cls)
        logger.debug("Returning …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy python-3.x pymysql aiohttp

12
推荐指数
2
解决办法
7647
查看次数

如何为 SSL 配置 PyMySQL 连接?

我正在尝试使用 SSL 和 PyMySQL 连接我的数据库,但我找不到关于语法是什么的好的文档。

这些凭据可在 Workbench 和 CLI 中使用,但在使用 PyMySQL 时出现此错误。

无法连接到“server.domain.com”上的 MySQL 服务器([WinError 10061] 无法建立连接,因为目标机器主动拒绝了它)”)

db_conn = pymysql.connect(
    host=db_creds['host'],
    user=db_creds['user'],
    passwd=db_creds['passwd'],
    db=db_creds['db'],
    charset=db_creds['charset'],
    ssl={'ssl':{'ca': 'C:/SSL_CERTS/ca-cert.pem',
                'key' : 'C:/SSL_CERTS/client-key.pem',
                'cert' : 'C:/SSL_CERTS/client-cert.pem'
                }
        }
)
Run Code Online (Sandbox Code Playgroud)

如果我关闭 SSL 并删除 SSL 参数,我可以连接不安全就好了。我的 SSL 参数有什么问题?

编辑:PyMySQL 现在想要像这样列出 ssl 参数而不是在字典中。

db_conn = pymysql.connect(
     host=db_creds['host'],
     user=db_creds['user'],
     passwd=db_creds['passwd'],
     db=db_creds['db'],
     charset=db_creds['charset'],
     ssl_ca='C:/SSL_CERTS/ca-cert.pem',
     ssl_key='C:/SSL_CERTS/client-key.pem',
     ssl_cert='C:/SSL_CERTS/client-cert.pem'
                          )
Run Code Online (Sandbox Code Playgroud)

python ssl pymysql

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

PyMysql UPDATE查询

我一直在尝试使用PyMysql,到目前为止我所做的一切(选择/插入),但是当我尝试更新它只是不起作用,没有错误没有什么,只是没有做任何事情.

import pymysql
connection = pymysql.connect(...)
cursor = connection.cursor()
cursor.execute("UPDATE Users SET IsConnected='1' WHERE Username='test'")
cursor.close()
connection.close()
Run Code Online (Sandbox Code Playgroud)

是的我已经仔细检查过Users,IsConnected和Username都是正确的并且测试确实存在(SELECT适用于它)

这是我的问题?

python mysql sql-update pymysql

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

在pymysql中选择查询

执行以下操作时:

import pymysql 



db = pymysql.connect(host='localhost', port=3306, user='root')
cur = db.cursor()    
print(cur.execute("SELECT ParentGuardianID FROM ParentGuardianInformation WHERE UserID ='" + UserID + "'"))
Run Code Online (Sandbox Code Playgroud)

输出是1

我怎么能改变代码,以便打印ParentGuardianID(即'001')的实际值而不是1.

我确信答案很简单,但我是初学者,所以任何帮助都会非常感激 - 谢谢!

python sql pymysql

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

PyMySQL插入NULL或String

我试图插入一个title可以是NULL字符串的PyMySQL 字段().但它不起作用.

query = """
    INSERT INTO `chapter` (title, chapter, volume)
    VALUES ("%s", "%s", %d)
"""

cur.execute(query % (None, "001", 1))
cur.execute(query % ("Title", "001", 1))
Run Code Online (Sandbox Code Playgroud)

此代码插入None数据库.如果我删除第一个周围的双引号%s,它会抛出一个错误:

pymysql.err.InternalError: (1054, "Unknown column 'None' in 'field list'")
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能插入NULL?

python mysql pymysql

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

SQLModel:sqlalchemy.exc.ArgumentError:需要列表达式或 FROM 子句,

我正在使用 SQLModel 库做一个简单的事情,select()就像他们的官方网站上描述的那样。但是我收到Column expression or FROM clause expected错误消息

from typing import Optional

from sqlmodel import Field, Session, SQLModel, create_engine, select

from models import Hero
    
sqrl = f"mysql+pymysql:///roo@asdf:localhost:3306/datab"

engine = create_engine(sqrl, echo=True)


def create_db_and_tables():
    SQLModel.metadata.create_all(engine)


def select_heroes():
    with Session(engine) as session:
        statement = select(Hero)
        results = session.exec(statement)
        for hero in results:
            print(hero)


def main():
    select_heroes()


if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

这是我的models/Hero.py代码:

from datetime import datetime, date, time
from typing import Optional
from sqlmodel import Field, …
Run Code Online (Sandbox Code Playgroud)

mysql sqlalchemy python-3.x pymysql sqlmodel

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

用Python模拟MySQL数据库

我使用Anaconda发行版的Python 3.4.在这个发行版中,我发现该pymysql库连接到现有的MySQL数据库,该数据库位于另一台计算机上.

import pymysql
config = {
      'user': 'my_user',
      'passwd': 'my_passwd',
      'host': 'my_host',
      'port': my_port
    }

    try:
        cnx = pymysql.connect(**config)
    except pymysql.err.OperationalError : 
        sys.exit("Invalid Input: Wrong username/database or password")
Run Code Online (Sandbox Code Playgroud)

我现在想为我的应用程序编写测试代码,我希望在setUp每个测试用例中创建一个非常小的数据库,最好是在内存中.但是,当我尝试使用pymysql它时,它无法建立连接.

def setUp(self):
    config = {
      'user': 'test_user',
      'passwd': 'test_passwd',
      'host': 'localhost'
    }
    cnx = pymysql.connect(**config)

pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 61] Connection refused)")
Run Code Online (Sandbox Code Playgroud)

我一直在谷歌搜索,并发现了一些关于SQLiteMySQLdb.我有以下问题:

  1. sqlite3MySQLdb适合在内存中快速创建数据库?
  2. 如何MySQLdb在Anaconda包中安装?
  3. 是否有一个测试数据库的例子,在setUp?这甚至是个好主意吗? …

python mysql sqlite mysql-python pymysql

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

如何从views.py文件向django数据库插入数据?

如何从视图中的函数py文件向我的django数据库插入数据?是python manage.py shell唯一的插入方式吗?

有关我正在使用的更多解释:

  • python 3.4
  • django 1.8.2
  • PyMySQL

例如:

models.py:

from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    city = models.CharField(max_length=60)
Run Code Online (Sandbox Code Playgroud)

views.py:

from django.http import HttpResponse
import pymysql
from books.models import Publisher

def send(request):
    p = Publisher(name='Apress', city='Berkeley')
    p.save()
Run Code Online (Sandbox Code Playgroud)

urls.py

来自niloofar.views import send

url(r'^ index /',发送),

我想在加载页面索引时,send函数工作并将数据插入数据库.

这是行不通的.它没有给出任何错误,当我刷新索引页面时没有任何反应,没有任何内容被发送到数据库.我认为在我尝试插入数据的方式上存在语法错误.

让我注意到即使我跑的python manage.py shell话:

来自books.models import Publisher

p =出版商(name ='Apress',city ='Berkeley')

p.save()

什么都不会插入django数据库.

python django django-models django-views pymysql

10
推荐指数
4
解决办法
5万
查看次数