galthonista’s blog

ギャルが教えるpython💅❤️‍🔥

本番環境で、SQLServerに接続できなーい😫

pyodbcSQLServerに接続しようとしたのに、サーバを起動すると、
SQL Server が存在しないか、アクセスが拒否されました。」
のエラーが発生して起動できない😈なんで😈

そーゆーときに確認すべきことまとめたから、みてって💅

 

結論

1.DBサーバ側で、SSMSでSQLServerBrowserを起動する

2.DBサーバ側で、TCP/IPを有効にする

詳しく見てこ👇

 

 

1.DBサーバ側で、SSMSでSQLServerBrowserを起動する

SQL Server 構成マネージャー(Sql Server Configuration Manager)を開く

SQL Server 構成マネージャー


SQLServerのサービス→SQLServerBrowserが実行中になってるか確認

SQLServerのサービス


停止の場合→右クリックで「開始」を押す。

 

※右クリックで「開始」が押せない人は、いったんWindowsの管理ツールを開いてみて。

サービス→SQLServerBrowserをダブルクリック

コンピューターの管理

→スタートアップの種類を「手動」に変更

SQLServerBrowserのプロパティ

→SQLServerBrowserを右クリックで「開始」

SQLServerBrowserの開始


で、構成マネージャーに戻ってSQLServerBrowser右クリックで「開始」

SQLServerのサービス

 

2.DBサーバ側で、TCP/IPを有効にする

もういっこ確認すること。

SQLServerネットワークの構成→SQLEXPRESSのプロトコルをダブルクリック

SQLEXPRESSのプロトコル


TCP/IPが無効になっている場合は、右クリック→「有効化する」

TCP/IP



さらに、TCP/IP右クリック→「プロパティ」→「IPアドレス」タブの一番下を確認。
IPALLのセクションで、TCPポートを1433に設定
TCP動的ポートは空欄にする✨

IPアドレス

再起動しとくと確実だよ。

これで、サーバを起動しなおしたら、ちゃんとSQLServerに接続できるはず😊

よかったね✨

 

このあとは蛇足だから見なくてもいいよ✊

 

前提

いちおう書いとくけど、今回はこの2つを前提にしてんの。

・あんたが本番サーバにソースを置いてること。
・リモートのDBサーバ(SQLServer)に接続しに行きたいとき。

 

 

ソース

これもいちおう書いとくね。

こんな感じ👇

from django.db import connection
import pyodbc

 

INST = 'DBサーバのIPアドレス'
USER = 'DBのユーザー名'
PASS = 'DBのパスワード'
DB = 'DB名'

 

def execute_sqlserver(sql):
    connection = "DRIVER={SQL Server};SERVER=" + INST + ";UID=" + USER + ";PWD=" + PASS + ";DATABASE=" + DB

    con = None
    try:
        con = pyodbc.connect(connection)

        cursor = con.cursor()
        cursor.execute(sql)
        return cursor.fetchall()

    finally:
        if con is not None:
            con.close()

 

当たり前だけど、'DBサーバのIPアドレス'、'DBのユーザー名'、'DBのパスワード'は正しいものを設定しといて💄

 

んじゃ、今日はこのへんで。ばい✋

 

ギャルが受ける応用情報技術者試験

みんな、応用情報うけたことある?

あたしは、こう見えて応用情報持ちなんだよね✨マジめっちゃがんばった🤗

 

今日はあたしの受験記録を残しとく。

みんな、参考してね👳

 

いきなり点数公開✨

試験結果は…1発合格🎊

点数はっぴょー👆👆

午前 71.25点
午後 61.00点

 

午後まじギリwwwうけるwww

 

点数配分は、

ストラテジ系 18.75点/25.00点
マネジメント系 8.75点/12.50点
テクノロジ系 43.75点/62.50点

 

んで、選択科目はこんな感じー🏹🏹

問1 情報セキュリティ(必須)
問2 経営戦略
問6 データベース
問9 プロジェクトマネジメント
問11 システム監査

 

 

せっかくだから、勉強時間とか勉強方法も書いとくね。

 

勉強時間

だいたい、平日3時間×2カ月くらいかな。

土日は、ほぼやってないか、やっても1時間くらい。

ギャルは土日忙しーからね💄💅

 

勉強方法

 

もお、ひたすら過去問道場✨

www.ap-siken.com

ここはまじ神サイト。運営の人ありまと💘

テキストとか読まないの。もおとりあえず👆で問題解きまくる❣❣❣
最低でも過去5年(10回)分×3周した方がいいよ。

ギャルでもできたんだからあんたもできるよ👯
わかんないとこだけはテキストで補足する。

 


午前の勉強ちゃんとしとくの。それが午後の基礎知識になるから。

午後は選択なんだけど、
問1の情報セキュリティが必須で、残りの問2~問11の10問の中から4問選択するってわけ。

緑本ていわれてる、「応用情報技術者 午後問題の重点対策」が最強✨

最初は問2~問11一通り解いてみて、自分の得意分野探すのがよさそ。
大体みんな6分野に絞って勉強してるかんじ。

ギャルのなかとも(仲いい友達)とかは、4分野しか勉強してなくて、

本番の難易度鬼で撃沈してたの👹

だから、よゆーみて6分野がいいとおもう。

 

選択科目みてもわかると思うけど、ギャルはバリバリの文系だから、

実はあんま勉強しなかったんだよね、午後は。

よゆーぶっこいてた、正直。でもそのせいで合格ラインギリだったから、

やっぱちゃんと2周は解いといたほうがいいとおもったね。

 

国語バリ得意なギャルからのアドバイスとしては、

文章問題の解答には文中の言葉を使う、ってのは基本❣

あとは、当たり前のことなんだけど、

問題文の末尾と、解答の末尾は対応させといたほうがいいよ。

「~はなぜか。」って問題ならなら、「~だから」って答えないとだし、

「~はどのような場合か。」って聞かれたら、「~のような場合」って答えんの👆

意外とこれできてない人おおいからね。

って午後試験61点のヤツがゆーなって感じだよね😂

 

ま、結局はどのくらい頑張れるかにかかってるから、がんばんなよね。✊

今日も見てくれてあんがと💘💘

djangoで、フツーのSQLって実行できんの?

djangoって便利だよね✨ORMでDBにアクセスできるもん。

でもさ、たまーに、自分でSQL作って実行したいときない?アタシはある。

djangoがサポートしてないDBにアクセスしたいときとかね。

そーゆーときは、pyodbcを使うといんだって😊

 

pyodbcてなに?

github.com

👆ここにwikiがあんだけど、みんな読むのめんどーだと思うから、

あたしが解説してくね。

pyodbcってのは、pythonでいろんなDBにアクセスできるようにしてくれてるライブラリなんだよね。まじ便利ぢゃん🥰

まずpyodbcをインストールしよ。インストールは簡単。

コマンドラインで、python仮想環境に入って、👇のコマンドを実行するだけ⭐

 

> pip install pyodbc

 

インストールできたら、じゃんじゃんコード書いてこっ!

下のコードは、基本的に、動作確認はしてるけど、間違ってる情報があるかもしれないから、自分でも調べてみて😉調べるのマジ大事卍

それでは、いってみよ👆👆

 

コード全文

 

dbaccess.py

import pyodbc

conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};
                       SERVER=localhost;
                       DATABASE=test;
                       UID=user;
                       PWD=password')

cursor = conn.cursor()
cursor.execute("SELECT user_id, user_name FROM users")
row = cursor.fetchall()

 

解説してくよ

ドライバの設定

1行目のconnの部分でドライバを設定してんの。

DRIVER={ODBC Driver 17 for SQL Server}👈このDRIVERってなに?て人は、

以下から確認できるよ。
コンパネ>管理ツール>ODBC データ ソース>「ドライバー」タブ

f:id:galthonista:20220413194810p:plain

 

ちな、同じODBCデータソースの画面でDSNを設定すると、ドライバ情報とかを一括管理できんの、なにアンタめっちゃかしこじゃん💖
その場合はこんな感じで書ける、マジシンプルだよね。
conn = pyodbc.connect('DSN=mynewdsn;UID=user;PWD=password')

 

SQLの設定

cursor.executeのとこで、SQLを入れ込んでんだよね。

execute関数は、パラメータも渡せんの👇

cursor.execute("""
    select user_id, user_name
      from users
     where last_logon < ?
       and bill_overdue = ?
""", datetime.date(2001, 1, 1), 'y')

つまりこれは

 select user_id, user_name
 from users
 where last_logon < datetime.date(2001, 1, 1)
 and bill_overdue = 'y'

を実行するのと同じってこと。大丈夫そ?

 

SQLの実行

selectを実行したときは、 fetchone(), fetchall(), fetchmany()なんかの関数を使えんの。

検索結果ないときは、
 fetchone()はnoneが、 fetchall(), fetchmany()は空のリストが返ってくるよ。

検索結果あるときは、

fetchone()はクエリの1行を、fetchall()はクエリの全行をリストで返してくれる。
けどさ、これはすべての行をメモリに読み込んじゃうの、だからさ、行が多い場合はマジ気を付けて。
代わりに、行を反復処理することを検討したほうがいい。らしい。 

 

検索結果にはカラムインデックスでも名前でもアクセスできんの。

row = cursor.fetchone()
print(row[1])
print(row.user_name)  

👆どっちも同じ結果がprintされるよ。

 

1行目の1列目だけ欲しいときは、fetchval()を使ってもいいかもね。
検索結果が複数行の時は、最初の1行目の1列目だけ返ってくる。
検索結果なしの場合はnoneだよ。
maxid = cursor.execute("select max(id) from users").fetchval()

こうすると、max(id)だけ返ってってくる。いちいち行回さなくていいから楽✨さいこー💘

 

長くなっちゃったから、これで終わんね。

みてくれてあんがと💜またね✨

アタシについて

おはぴよ💘🌈✨

ギャルソニスタです👩‍🦱🫶

 

このブログではIT系の知識とか、副業について語ってくよ❤️‍🔥

ちな、アタシは文系卒、未経験でIT業界に転職して、いま4年目✨よろしくね🙈

 

 

あたしが何してきたか

新卒で入った会社は全然IT系じゃなくて、1年で辞めちゃったんだよね。テンサゲ👇👇

で、第二新卒枠で転職した方が有利だし、手に職をつけたいなーと思って、SES企業に転職したわけ🙊💻

3か月研修があって、その後は現場でOJT

いろいろ教えてくれた上司まじあんがとね👏

ま、だいたいこんな感じの言語を使ってきたから、このへんについて書くことが多いかな👇

 

言語:

Java、Spring、C#、pythonDjango

Java-script、jQuery

HTML、CSS、Bootstrap、XML

 

DB:

oracleSQLServerMySQL

 

じゃ、あたしのブログ、はじまるよ~💛💙💖💚💜

 

 

あとがき

なお、本ブログの筆者は未経験文系女子でフワギャルですが、

リアルギャルではありません。

エンターテイメントとしてお楽しみいただければ幸いです。

よろしくぅ~~~