标签: pymysql

Python3 - '超过锁定等待超时; 尝试重新启动事务'并且只处理数据库

使用Python我一直得到一个

(1205, 'Lock wait timeout exceeded; try restarting transaction')
Run Code Online (Sandbox Code Playgroud)

每当我尝试插入特定表时出错.但是,当我尝试直接从MySQL控制台插入时,它工作得很好.展望着

SHOW FULL PROCESSLIST
Run Code Online (Sandbox Code Playgroud)

在数据库上显示没有其他活动查询.由于这是一个没有附加实时应用程序的开发数据库,​​我无法想象任何问题.但是,它是在托管我们的生产数据库的服务器上提供的,因此我强烈希望尽可能不进行重置.关于如何调试这个的任何建议?

注意 如果我使用SHOW FULL PROCESSLIST查看正在对数据库运行的查询,最终会因上述消息而失败,然后从MySQL控制台手动插入它,它会按预期工作.

编辑 以下是查询的示例:

INSERT INTO deals (user_ID, store_ID, storeChain_ID, title, dealSaving, 
dealDisclaimer, restriction, dealImage, dealURL, submit_ID, userProvider_ID, 
createDate, createDateTime, expirationDate, expirationDateTime, ZIP, STATE, 
city, businessType, DealType_ID, IP, rating, popular, dealSearchData, tag, 
submitName, provider_dealID)
VALUES (NULL,
        2651049,
        NULL,
        'Toronto East Community Arts Program',
        'Three-Week Photography Workshop',
        NULL,
        NULL,
        'https://a1.image.net/imgs/8423535b-bd3b-4e1e-afee-ab2869970a4c/700_q60.jpg',
        'https://www.exmples.com/deals/1336374',
        111,
        1,
        '2015-11-12',
        '2015-11-12 10:01:58.282826',
        '2015-11-17 09:59:59',
        '2015-11-17 23:59:00',
        'M4M 1K7',
        'ON', …
Run Code Online (Sandbox Code Playgroud)

python mysql python-3.x pymysql

6
推荐指数
2
解决办法
1980
查看次数

MySQL"延迟提交确定"和性能

我在AWS上使用AURORA MySQL.当我跑步时,show Processlist我看到很多delayed commit ok done

我想问一下这会影响性能吗?如果是的话,我该怎么做?

我正在使用PyMySQL,一个基于Python的库,我确实.commit在每个INSERTS和之后使用UPDATE

python mysql python-3.x pymysql

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

执行pymysql.connect时出现错误Keyerror 255

这是代码

import pymysql
pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    password='iDontWannaSay',
    db='iDontWannaShow',
    charset='utf8'
)
Run Code Online (Sandbox Code Playgroud)

和错误Traceback是:

data is :::::b'\xff\x02\x00\xff\x81\x15'....##### I was add near line 1279 which is print("data is :::::%s...."%data[i:i+6])
Traceback (most recent call last):
  File "C:\Users\123\Desktop\pymysqldebug.py", line 8, in <module>
    charset='utf8'
  File "D:\Program Files (x86)\Python\Python35\lib\site-packages\pymysql\__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "D:\Program Files (x86)\Python\Python35\lib\site-packages\pymysql\connections.py", line 709, in __init__
    self.connect()
  File "D:\Program Files (x86)\Python\Python35\lib\site-packages\pymysql\connections.py", line 934, in connect
    self._get_server_information()
  File "D:\Program Files (x86)\Python\Python35\lib\site-packages\pymysql\connections.py", line 1279, in _get_server_information
    self.server_charset = charset_by_id(lang).name
  File "D:\Program …
Run Code Online (Sandbox Code Playgroud)

python mysql pymysql

6
推荐指数
2
解决办法
4061
查看次数

在Flask中使用pymysql时出错

我正在使用pymysql客户端连接到我的Flask API中的mysql,几天后一切正常(大约1-2天),然后突然开始抛出此错误

Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/pymysql/connections.py", line 1039, in _write_bytes
    self._sock.sendall(data)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "Main.py", line 194, in post
    result={'resultCode':100,'resultDescription':'SUCCESS','result':self.getStudentATData(studentId,args['chapterId'])}
  File "Main.py", line 176, in getStudentATData
    cur.execute("my query")
  File "/usr/local/lib/python3.4/dist-packages/pymysql/cursors.py", line 166, in execute
    result = self._query(query)
  File "/usr/local/lib/python3.4/dist-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/usr/local/lib/python3.4/dist-packages/pymysql/connections.py", line 855, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/usr/local/lib/python3.4/dist-packages/pymysql/connections.py", line 1092, in _execute_command
    self._write_bytes(packet) …
Run Code Online (Sandbox Code Playgroud)

python mysql flask pymysql

6
推荐指数
2
解决办法
3383
查看次数

无法在Windows计算机上使用sqlalchemy连接到本地mysql数据库

我正在尝试使用sqlalchemy连接到Windows计算机上的本地mysql数据库。它可以使用pymysql,但不能与sqlalchemy一起使用。

代码sqlalchemy:

engine = create_engine('mysql+mysqldb://root:mypass@localhost/classicmodels')
engine.connect()
Run Code Online (Sandbox Code Playgroud)

给出错误:

OperationalError: (_mysql_exceptions.OperationalError) (1193, "Unknown system variable 'tx_isolation'")
Run Code Online (Sandbox Code Playgroud)

使用pymysql的工作代码:

connection = pymysql.connect(host='localhost',
                             user='root',
                             password = 'mypass',
                             db = 'classicmodels')

cursor = connection.cursor()

cursor.execute('select * from customers')
mydata = cursor.fetchall()
mydata = pd.DataFrame(list(mydata))
mydata.head(5)
Run Code Online (Sandbox Code Playgroud)

python sql database-connection sqlalchemy pymysql

6
推荐指数
2
解决办法
3189
查看次数

自动创建数据库以进行测试

为了更快地进行测试,最好使用基于内存的sqlite,但仍需要偶尔使用MySQL进行测试,使其更接近于生产环境。为了避免枯燥的讨论/抽象问题,对于上面提到的两种类型的SQL数据库,下面的代码都会插入几个单词并确认它们已在数据库中。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import unittest


db = SQLAlchemy()
TEST_DATABASE_URL_MEMORY = 'sqlite:///:memory:'
TEST_DATABASE_URL_MYSQL = 'mysql+pymysql://root:@127.0.0.1:3306/somewords'


def create_app(db_url):
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = db_url
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
    db.init_app(app)
    return app


class Word(db.Model):
    __tablename__ = 'words'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    word = db.Column(db.String(32), index=True)


class TestInsertion(unittest.TestCase):
    def manual_set_up(self, db_url):
        self.app = create_app(db_url)
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.drop_all()
        db.create_all()

    def insert(self):
        words = ['hello', 'world']
        for word in words:
            w = Word(word=word)
            db.session.add(w)
        db.session.commit()
        for word in …
Run Code Online (Sandbox Code Playgroud)

python sqlite sqlalchemy flask pymysql

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

Python pymysql - 遍历 mysql 表键和值

我是 python pymysql 的新手(我在 Ruby 之前使用过 Mysql2 gem),我想从 mysql 表中获取键和值并执行一些操作:

例如:

dbconnection = pymysql.connect(host=mysql_hostname, user=mysql_username, password=mysql_pass, db=mysql_schema, charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
cursor = dbconnection.cursor()
_SQL = (""" 
        select * ...
        """)

cursor.execute(_SQL)
result = cursor.fetchall()
for row in result:
    print(row)
    print("\n")
    # How can I access each key and each value for example: STATUS is the value and 3 is the key
    # I want to do something like this: 
    #'if the value of 'CAP' > 1: change the value of status …
Run Code Online (Sandbox Code Playgroud)

python mysql pymysql

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

MySQL 'SHOW TABLES' 返回计数而不是列表(Python)

我正在对用于查询数据库的脚本进行故障排除。为了确保一切正常,我将其分解为一个简单的“SHOW TABLES”查询。问题是它返回的是表的计数,而不是它应该返回的名称列表。

import pymysql

connection = pymysql.connect(host='10.0.0.208', user='admin', passwd='Passwrd')

cursor = connection.cursor()
sqlstring = 'SHOW TABLES;'
cursor.execute('USE CustDB')
x = cursor.execute(sqlstring)

print(x)
Run Code Online (Sandbox Code Playgroud)

这仅返回“17”。我错过了什么??

python mysql python-3.x pymysql

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

没有flask-sqlalchemy或ORM的flask登录

我目前在我的应用程序中使用 Flask-login 进行用户登录会话管理。我正在使用flask-sqlalchemy,所以一切正常。由于我之前的 sql 经验,我不是 ORM 的粉丝。我喜欢直接使用SQL。可能是因为我对 ORM 的了解不深。无论如何,我的问题是 - 有没有什么方法可以在没有 ORM/flask-sqlalchemy 的情况下使用烧瓶登录,在那里我通过 pymysql 或 MySQL 连接器获取用户数据?

我知道我可以自己创建会话并在我注销时弹出,但我想知道是否有任何方法可以将flask-login或任何其他会话管理库与pymysql一起使用?

python flask flask-sqlalchemy pymysql flask-login

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

如何使用 LIKE 子句转义 pymysql 中的 % 和 \ 符号?

我想在“事件”列中找到“概率:10%”或“10% 高”之类的内容,但是当我使用以下代码时:

conn = pymysql.connect(host="localhost", port=3306, user='myid', passwd='mypwd', db='mydb', charset='utf8')
curs = conn.cursor()

key = "%"
curs.execute(
        "SELECT count(*) AS number FROM city WHERE events LIKE %s",
        ("%" + key + "%",)
    )
Run Code Online (Sandbox Code Playgroud)

它返回表中的每一行。它执行了这个查询:

  SELECT count(*) AS number FROM city WHERE events LIKE '%%%'
Run Code Online (Sandbox Code Playgroud)

像这样,我不是故意的。

搜索反斜杠符号也给了我错误的结果。

我应该怎么做才能得到正确的结果?

提前致谢。

python mysql pymysql

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