使用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) 我正在使用 AWS 控制台并尝试使用 Lambda 函数将数据添加到 MySQL 表。每当我尝试测试该函数时,都会出现以下错误:
无法导入模块“app”:没有名为 pymysql 的模块
它的行为就像 pymysql 不在路径中。我进入了 microEC2 实例并 pip'ed pymysql。但它仍然不起作用。我曾尝试将我的代码压缩到一个文件中并上传并将代码复制并粘贴到控制台并运行它。两者都不起作用。任何帮助将不胜感激。
这是一个代码片段:
import sys
import logging
import pymysql
def main(event, context):
Run Code Online (Sandbox Code Playgroud) 我在AWS上使用AURORA MySQL.当我跑步时,show Processlist我看到很多delayed commit ok done
我想问一下这会影响性能吗?如果是的话,我该怎么做?
我正在使用PyMySQL,一个基于Python的库,我确实.commit在每个INSERTS和之后使用UPDATE
我正在尝试使用 Pandas 和 MySQL 将数据(推文和其他 Twitter 文本信息)导入到数据库中。我收到以下错误:
166:警告:(1366,“不正确的字符串值:'\xF0\x9F\x92\x9C\xF0\x9F...' 对于第 3 行的 'text' 列”)结果 = self._query(query)
166:警告:(1366,“不正确的字符串值:'\xF0\x9F\x98\x8D t...' 列 'text' 在第 5 行”)结果 = self._query(query)
经过彻底搜索后,我的数据库列的设置方式似乎有问题。我已经尝试将数据库字符集设置为 UTF8 并将其整理为 utf_unicode_ci,但我仍然收到相同的错误。
以下是将数据导入数据库的代码:
#To create connection and write table into MySQL
engine = create_engine("mysql+pymysql://{user}:{pw}@{lh}/{db}?charset=utf8"
.format(user="user",
pw="pass",
db="blahDB",
lh="bla.com/aald/"))
df.to_sql(con=engine, name='US_tweets', if_exists='replace')
Run Code Online (Sandbox Code Playgroud)
我正在导入的数据由以下数据类型组成:“int64”、“object”和“datetime64[ns]”。我通过将数据打印到控制台来发现这些数据类型
print(df['tweett']) >>> returns dtype 'object'
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助,谢谢!
我正在使用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) 我正在尝试使用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) 我正在尝试使用 python3+sqlalchemy+pymysql 使用 pandas read_sql() 方法从 MySQL 查询中读取数据
我尝试按照以下教程进行操作 -
https://pythondata.com/quick-tip-sqlalchemy-for-mysql-and-pandas/
https://www.youtube.com/watch?v=M-4EpNdlSuY
https://www.programcreek.com/python/example/101381/pandas.read_sql
代码看起来一切都很好
import pandas
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
df = pandas.read_sql("SELECT * FROM persons", con = engine)
Run Code Online (Sandbox Code Playgroud)
收到以下错误 -
AttributeError: 'Engine' 对象没有属性 'cursor'
当我尝试传递“连接”变量而不是“引擎”时,如下所示 -
import pandas
import sqlalchemy
engine = sqlalchemy.create_engine('mysql+pymysql://root:mypass@example.com:3306/mydatabase')
connection = engine.connect()
df = pandas.read_sql("SELECT * FROM persons", con = connection)
Run Code Online (Sandbox Code Playgroud)
它说 -
AttributeError: 'Connection' 对象没有属性 'cursor'
我究竟做错了什么?
为了更快地进行测试,最好使用基于内存的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) 我有一个 DataFrame,它有大约 30,000 多行和 150 多列。因此,目前我正在使用以下代码将数据插入 MySQL。但是由于它一次读取一行,因此将所有行插入到 MySql 中花费了太多时间。
有什么方法可以一次或批量插入所有行?这里的限制是我只需要使用 PyMySQL,我不能安装任何其他库。
import pymysql
import pandas as pd
# Create dataframe
data = pd.DataFrame({
'book_id':[12345, 12346, 12347],
'title':['Python Programming', 'Learn MySQL', 'Data Science Cookbook'],
'price':[29, 23, 27]
})
# Connect to the database
connection = pymysql.connect(host='localhost',
user='root',
password='12345',
db='book')
# create cursor
cursor=connection.cursor()
# creating column list for insertion
cols = "`,`".join([str(i) for i in data.columns.tolist()])
# Insert DataFrame recrds one by one.
for i,row in data.iterrows():
sql = "INSERT INTO …Run Code Online (Sandbox Code Playgroud) 使用最新版本的 PyMySQL(0.9.3) 我无法执行一个查询字符串,其中包含多个用分号 (;) 分隔的 SQL 语句
我的python版本是:Python 3.6.5
import pymysql # version 0.9.3
conn = {
"host": "mysql_server_hostname",
"password": "my_password",
"port": <<port_no>>,
"user": "my_username"
}
my_query_str = 'show databases;use random_existing_db;'
with pymysql.connect(**conn):
cur.execute(query)
Run Code Online (Sandbox Code Playgroud)
返回错误:(1064,'在单个查询中检测到多个语句)
尝试使用 PyMySQL-0.7.11 运行相同的查询并且它有效