Search code examples
mysqlpython-3.6pymysqlpeewee

Unable to connect to a MySQL DB with peewee


In PyCharm I created a MySQL schema using pymysql on my computer. Now I want to use Peewee to create tables and write the SQL queries. However, I always receive an error message (see below) when trying to connect to the DB.

The user has sufficient rights to create tables in the DB schema as it works flawlessly with pymysql (creating tables as well as the schema works fine). I looked at similar questions on Stackoverflow and couldn't find a similar problem. Moreover, this problem wasn't experienced in any of the tutorials I looked at, so I'm not entirely sure what could be the culprit causing the error. Below is a minimal working example.

    from peewee import*
    import peewee

    user = 'root'
    password = 'root'
    db_name = 'peewee_demo'

    # The schema with the name 'peewee_demo' exists
    db = MySQLDatabase(db_name, user=user, passwd=password)


    class Book(peewee.Model):
        author = peewee.CharField()
        title = peewee.TextField()

        class Meta:
            database = db


    db.connect()  # Code fails here
    Book.create_table()
    book = Book(author="me", title='Peewee is cool')
    book.save()
    for book in Book.filter(author="me"):
        print(book.title)

I would expect the above code to connect to MySQL and then create a new table in the schema "peewee_demo". But instead, the code throws an error message when trying to connect to the DB:

/usr/bin/python3.6: Relink '/lib/x86_64-linux-gnu/libsystemd.so.0' with /lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol clock_gettime'

/usr/bin/python3.6: Relink /lib/x86_64-linux-gnu/libudev.so.1' with /lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime' Do you have any ideas how to fix this issue?

Thanks in advance


Solution

  • As @coleifer pointed out in his comment, the error was probably related to a shared library issue in Python. After setting up a new virtual environment and installing all required packages, everything runs perfectly fine.

    I just added the answer to be able to close the question. If @coleifer converts his comment into an answer, I'll delete mine and accept his.