Connect with SQLAlchemy

You can connect to your SingleStore deployments from SQLAlchemy using the SingleStore SQLAlchemy dialect (singlestoredb://).

Remarks

Example

The following example connects to a SingleStore deployment using SQLAlchemy and returns all the rows in a table named strg.

This example uses the following connection parameters:

  • Dialect: singlestoredb://

  • SingleStore database username: s2user

  • Password of the SingleStore database user: passkey

  • Hostname of the SingleStore deployment: svchost

  • Port: 3306

  • Database name: dbTest

  1. Run the following command in the SingleStore command line:

    CREATE TABLE strg (ID INT, Name VARCHAR(20));
    INSERT INTO strg VALUES (1, "sam_duke");
    INSERT INTO strg VALUES (2, "adam_west");
    INSERT INTO strg VALUES (3, "anna_moore");
    SELECT * FROM strg;
    +----+------------+
    | ID | Name       |
    +----+------------+
    |  1 | sam_duke   |
    |  2 | adam_west  |
    |  3 | anna_moore |
    +----+------------+
  2. Create a .py file (say pyTest.py), and add the following code to the file:

    from sqlalchemy import create_engine, text
    engine = create_engine('singlestoredb://s2user:passkey@svchost/dbTest')
    conn = engine.connect()
    result = conn.execute(text("SELECT * FROM strg"))
    for row in result:
    print(row)
  3. Run the following command:

    python3 pyTest.py
    (3, 'anna_moore')
    (2, 'adam_west')
    (1, 'sam_duke')

The following examples perform CRUD operations using the same connection parameters.

Create Operation Example

Add the following code to a .py file (say ct.py):

from sqlalchemy import create_engine, text
engine = create_engine('singlestoredb://s2user:passkey@svchost:3306/dbTest')
conn = engine.connect()
conn.execute(text("CREATE TABLE stock (ID INT, Code VARCHAR(4), Qty INT)"))
conn.execute(text("INSERT INTO stock VALUES (1,'xvfg',23)"))
conn.execute(text("INSERT INTO stock VALUES (2,'dtsi',12)"))
conn.execute(text("INSERT INTO stock VALUES (3,'rtky',8)"))
conn.close()

Run the following command:

python3 ct.py

Read Operation Example

Add the following code to a .py file (say rt.py):

from sqlalchemy import create_engine, text
engine = create_engine('singlestoredb://s2user:passkey@svchost:3306/dbTest')
conn = engine.connect()
result = conn.execute(text("SELECT * FROM stock"))
for row in result:
print(row)
conn.close()

Run the following command:

python3 rt.py
(1, 'xvfg', 23)
(2, 'dtsi', 12)
(3, 'rtky', 8)

Update Operation Example

Add the following code to a .py file (say ut.py):

from sqlalchemy import create_engine, text
engine = create_engine('singlestoredb://s2user:passkey@svchost:3306/dbTest')
conn = engine.connect()
conn.execute(text("UPDATE stock SET Qty = 10 WHERE Code = 'rtky'"))
result = conn.execute(text("SELECT * FROM stock"))
for row in result:
print(row)
conn.close()

Run the following command:

python3 ut.py
(3, 'rtky', 10)
(1, 'xvfg', 23)
(2, 'dtsi', 12)

Delete Operation Example

Add the following code to a .py file (say dt.py):

from sqlalchemy import create_engine, text
engine = create_engine('singlestoredb://s2user:passkey@svchost:3306/dbTest')
conn = engine.connect()
conn.execute(text("DELETE FROM stock WHERE code = 'rtky'"))
result = conn.execute(text("SELECT * FROM stock"))
for row in result:
print(row)
conn.close()

Run the following command:

python3 dt.py
(1, 'xvfg', 23)
(2, 'dtsi', 12)

Refer to SQLAlchemy SQL Expression Language Tutorial for more examples.

Troubleshooting

Error: ModuleNotFoundError: No module named 'MySQLdb'

Solution: Install a supported Python library, for example the SingleStore Python Client.

Error: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

Solution: To resolve this issue:

  • Specify 127.0.0.1 as the host instead of localhost.

  • Modify the socket value in the /etc/mysql/my.cnf file to your SingleStore socket. For example,

    [client]
    port = 3306
    socket = /var/lib/memsql/<Singlestore_node_id>/data/memsql.sock

    Replace <Singlestore_node_id> with the MemSQL ID of the aggregator node. Run the sdb-admin list-nodes command to list the SingleStore nodes.

References

Last modified: March 26, 2025

Was this article helpful?

Verification instructions

Note: You must install cosign to verify the authenticity of the SingleStore file.

Use the following steps to verify the authenticity of singlestoredb-server, singlestoredb-toolbox, singlestoredb-studio, and singlestore-client SingleStore files that have been downloaded.

You may perform the following steps on any computer that can run cosign, such as the main deployment host of the cluster.

  1. (Optional) Run the following command to view the associated signature files.

    curl undefined
  2. Download the signature file from the SingleStore release server.

    • Option 1: Click the Download Signature button next to the SingleStore file.

    • Option 2: Copy and paste the following URL into the address bar of your browser and save the signature file.

    • Option 3: Run the following command to download the signature file.

      curl -O undefined
  3. After the signature file has been downloaded, run the following command to verify the authenticity of the SingleStore file.

    echo -n undefined |
    cosign verify-blob --certificate-oidc-issuer https://oidc.eks.us-east-1.amazonaws.com/id/CCDCDBA1379A5596AB5B2E46DCA385BC \
    --certificate-identity https://kubernetes.io/namespaces/freya-production/serviceaccounts/job-worker \
    --bundle undefined \
    --new-bundle-format -
    Verified OK