Skip to main content

Setup pyodbc for connecting mssql (with freeTDS)

@Windows

1. pip install pyodbc
2.  Install Windows ODBC driver: https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-2016

@Linux (Ubuntu-base)
1. freeTDS install using apt
apt-get install freetds-dev freetds-bin
apt-get install tdsodbc
  • Explanation
    • tdsodbc => /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
    • freetds-dev freetds-bin => /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so and etc files

2.  edit or add in /etc/odbcinst.ini

[FreeTDS]
Description = FreeTDS ODBC Driver
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
FileUsage = 1
CPTimeout =
CPReuse =

  • Example code:
    import pyodbc
    
    connection_string = (
        'DRIVER={FreeTDS};'
        'SERVER=1.2.3.4;'
        'PORT=1433;'
        'DATABASE=mydbname;'
        'UID=myuser;'
        'PWD=password;'
        'TDS_Version=7.3;'
    #    'Encrypt=no;TrustServerCertificate=yes;Trusted_Connection=no;'
    )
    
    connection = pyodbc.connect(connection_string)
    
    cursor = connection.cursor()
    
    cursor.execute('SELECT TOP 3 * FROM MY_TABLE;')
    
    for row in cursor:
        print(row)
    
    cursor.close()
    connection.close()

Comments

Popular posts from this blog

Redmine production.log to uri log

But.. It doesn't work well. (Because the sequence of line is not arranged.) It is better way to use ' redmine_access_logger' plugin than this #!/bin/bash # Setting LOG_FILE=/redmine-3.3.3/log/production.log #LOG_FILE=mylog.log PIDFILE=/var/run/redmine_info_log.pid # Program Variables OUTPUT_LOGDIR=`dirname ${LOG_FILE}` OPT_DEBUG=0 URI_FILTER_REGEX="(^\"/people/avatar)|(^/attachments/thumbnail/)|(^\"/issues/.*\.xml)" function echo_log() { if [ "$2" != "" ]; then echo "$1" >> $2 else echo "$1" fi } if [ -f $PIDFILE ] then PID=$(cat $PIDFILE) ps -p $PID > /dev/null 2>&1 if [ $? -eq 0 ] then echo "Process already running" exit 1 else ## Process not found assume not running echo $$ > $PIDFILE if [ $? -ne 0 ] then echo "Could not create PID file" exit 1 fi fi else echo $$ > $PIDFILE if [ $? -ne 0 ]

[docker/redmine] run redmine with sqlite3 in docker

Basic Rule:  I want to use "/home2/home/redmine" directory for redmine DB.  I want to use sqlite3 for redmine. 1. in host side  # adduser redmine 2. in host side. (go into dockers container for copying base files to host)  # docker run -it -v /home2/home/redmine/:/usr/src/redmine/HOST --name redmine -p 80:3000 redmine bash 2-1. in redmine container of docker : work dir is /usr/src/redmine  # cp -a config HOST/  # cp -a db HOST/  # exit 2-2. in host side : remove all docker contatiners  # docker rm $(docker ps -a -q) 2-3. in host side : chown directories.  # cd /home2/home/redmine  # chown redmine.redmine . -R 3. edit "/home2/home/redmine/config/database.yml" production:   adapter: sqlite3   database: sqlite/redmine.db   host: localhost 4. Run Redmine with daemonized.  # docker run -d -v /etc/passwd:/etc/passwd:ro -v /home2/home/redmine/DB:/usr/src/redmine/sqlite -v /home2/home/redmine/config:/usr/src/redmine/config -v /home2/home/redmin

[WordPress] Change https redirect in DB.

If you make an https redirect without thinking about SSL configuration: Check DB SELECT * from wp_options where option_name IN ('siteurl', 'home'); Update UPDATE wp_options SET option_value = REPLACE(option_value, 'https://your_domain', 'http://your_domain') WHERE option_name IN ('siteurl', 'home');