簡體   English   中英

SQLAlchemy無法連接到本地MySQL

[英]SQLAlchemy can't connect to local MySQL

我正在嘗試使用SQLAlchemy創建數據庫,但是當我運行時

meta.create_all()

我懂了

    super(Connection, self).__init__(*args, **kwargs2)
sqlalchemy.exc.OperationalError: (OperationalError) (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)") None None

這是我的代碼:

from sqlalchemy import *
from sqlalchemy.ext.declarative import *
from sqlalchemy.orm import *
from sqlalchemy.databases import mysql
from datetime import datetime
import logging
from operator import itemgetter
from collections import deque

#logging.basicConfig()
#logging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)

#meta = MetaData('sqlite:///database.sqlite3')
f = open("db.txt", "r") # db.txt should contain text like "mysql://realboy@localhost/realboy?charset=utf8&use_unicode=0"
db_path = f.read()
f.close()

db = create_engine(db_path)
meta = MetaData(db)
users = Table('users', meta,
  Column("id", Integer, primary_key=True),
  Column("username", String(100), unique=True),
  Column("password", String(100)),
  Column("explored_friends", Boolean, default=False),
  Column("exhausted_friends", Boolean, default=False),
  Column("explored_tweets", Boolean, default=False),
  Column("edge_count", Integer, default=0),
  Column("group", Integer, default=-1),
  mysql_charset='utf8'
)

meta.create_all()

您的MySQL服務器的套接字可能不在/tmp/mysql.sock,因此驅動程序無法連接。 例如,我的位於/var/run/mysqld/mysqld.sock。 SQLAlchemy可能使用mysqclient驅動程序,該驅動程序帶有unix_socket參數。 要利用這一點,請嘗試在連接URI中使用它,如下所示:

mysql://realboy@localhost/realboy?unix_socket=/var/run/mysqld/mysqld.sock

要找出服務器套接字的實際位置,請嘗試查看/etc/mysql/my.cnf [或服務器用於配置的任何內容]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM