我正在嘗試從本地機器在 pythonAnywhere 上運行的 mySQL 服務器中創建一個表。我遵循了入門指南https://help.pythonanywhere.com/pages/AccessingMySQLFromOutsidePythonAnywhere,但我遇到了 OperationalError: (2013, 'Lost connection to MySQL server during query')。
這是我的代碼:
import MySQLdb
import sshtunnel
sshtunnel.SSH_TIMEOUT = 10
sshtunnel.TUNNEL_TIMEOUT = 10
with sshtunnel.SSHTunnelForwarder(
('ssh.pythonanywhere.com'),
ssh_username='MyUSERNAME', ssh_password='***',
remote_bind_address=('MyUSERNAME.mysql.pythonanywhere-services.com', 3306)
) as tunnel:
connection = MySQLdb.connect(
user='MyUSERNAME',
passwd='***',
host='127.0.0.1', port=tunnel.local_bind_port,
db='MyUSERNAME$liveSports',
)
cur = connection.cursor()
with connection:
cur.execute("CREATE TABLE table_one (date TEXT, start_time TEXT)")
我不確定為什么我會收到這個錯誤,或者如何解決它。類似的錯誤,Lost connection to MySQL server during query,表明要么我向我的服務器發送了錯誤的查詢,但據我所知這是一個有效的查詢,或者我的資料包太大,我不知道相信一張空桌子會。
我是 SQL 新手,但我似乎無法找到這個問題的答案。
uj5u.com熱心網友回復:
你必須讓隧道保持打開狀態。這是簡單的方法:
import MySQLdb
import sshtunnel
sshtunnel.SSH_TIMEOUT = 10
sshtunnel.TUNNEL_TIMEOUT = 10
tunnel = sshtunnel.SSHTunnelForwarder(
('ssh.pythonanywhere.com'),
ssh_username='MyUSERNAME', ssh_password='***',
remote_bind_address=('MyUSERNAME.mysql.pythonanywhere-services.com', 3306)
)
connection = MySQLdb.connect(
user='MyUSERNAME',
passwd='***',
host='127.0.0.1', port=tunnel.local_bind_port,
db='MyUSERNAME$liveSports',
)
cur = connection.cursor()
cur.execute("CREATE TABLE table_one (date TEXT, start_time TEXT)")
您可以將所有資料庫內容放在一個函式中并使用
with sshtunnel.SSHTunnelForwarder(
('ssh.pythonanywhere.com'),
ssh_username='MyUSERNAME', ssh_password='***',
remote_bind_address=('MyUSERNAME.mysql.pythonanywhere-services.com', 3306)
) as tunnel:
do_all_processing()
def do_all_processing():
connection = MySQLdb.connect(
user='MyUSERNAME',
passwd='***',
host='127.0.0.1', port=tunnel.local_bind_port,
db='MyUSERNAME$liveSports',
)
...etc...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/322106.html
標籤:Python mysql sql-server 创建表 ssh-隧道
上一篇:如何將sql查詢傳輸到包含&的djangoorm代碼
下一篇:將兩個查詢合并為一個查詢