PythonでSQLデータベースの基本を勉強中!質問あります

このQ&Aのポイント
  • Pythonにて、sqlite3を使ったデータベース作成の基本を勉強中です。しかし、理解できずに混乱しています。具体的には、sqlite.connect(dbname)でconに入ったオブジェクトの属性がわかりません。curとconに入ったオブジェクトの使い方について詳しく教えてください。
  • Pythonのsqlite3を使ったデータベース作成の勉強で困っています。サンプルコードを見ながら勉強しているのですが、sqlite.connect(dbname)でconというオブジェクトに入った属性について理解できません。具体的には、そのオブジェクトをどのように操作すればよいのかわかりません。お助けください。
  • Pythonとsqlite3を使用してデータベース作成の基本を学んでいますが、sqlite.connect(dbname)でconというオブジェクトについて理解できません。curとconの使い方について具体的な説明を教えていただけないでしょうか。初心者なので、わかりやすく説明していただけると助かります。
回答を見る
  • ベストアンサー

Python で SQL データベース

こんにちは、現在Pythonにて、sqlite3を使ったデータベース作成の基本を勉強しているのですが、全く何がなんだかわからないとちょっと混乱した状況に陥ってしまったので、お助け頂きたく書き込みさせて頂きました。 先ず、サンプルを見て勉強しているのですが、 con = sqlite.connect(dbname) cur = con.cursor() cur.execute('SELECT City FROM Precipitation') すみません。親のファンクションが解らないです。 Pythonはhelp(Function name)で勉強ができるのですが、 sqlite.connect(dbname)でconに入ったのは、一体何属性の物なんでしょうか。正直、それぞれcur と con に入ったのが何属性のものか解らなければヘルプを使って勉強のしようも無く、立ち往生しています。 そもそも用語の使用が不適切ですみません。訳解らなかったらできるだけ付属しますので、お助け下さい。

  • Python
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

「親のファンクション」とは具体的にどんなものを指して 云っていますか? > sqlite.connect(dbname)でconに入ったのは、一体何属性の物なんでしょうか。 sqliteでデータベースを扱うための「コネクションオブジェクト」 です。 13.13.2 Connection Objects http://docs.python.org/lib/sqlite3-Connection-Objects.html cur は SQLを発行するための「カーソルオブジェクト」 です。 13.13.3 Cursor Objects http://docs.python.org/lib/sqlite3-Cursor-Objects.html ファイルを読み書きする前にオープンするようなもの だと考えればいいんじゃないですかね。 seraphyの日記 - Python2.5でSQLite3を使ってみる。 http://d.hatena.ne.jp/seraphy/20060927

DeeAnna
質問者

お礼

すみません。何のオブジェクトが入っているかという質問でした。 はっきりしました!!役に立つリンクまで有難うございます。

関連するQ&A

  • python2.5を使用してSQLite3のデータベースを読み込みたいのです。

    いま、python2.5を使用してSQLite3のデータベースを読み込みたいのですが、うまく接続できません。pythonとSQLiteは単体ではうまく起動しているので、問い合わせ方に問題があるようなのですが、参考書のとおりに実行してもエラーが出てしまします。接続の書き方を教えていただければ幸いです。以下には、エラーが出た問い合わせを書きました。違うところがあれば指摘してください。 import sqlite3 con = sqlite3.connect("データベース名") cur = con.cursor() //ここまではうまくいきました。 cur.execute("""create table テーブル名(name text,age text)""") cur.execute("select * from テーブル名") print cur.fetchall()

  • Windows10のpythonからPostgre

    バージョンPython2.7.11、バージョンPostgreSQL9.6でPATHも通しています。下記のコードをtest105.py で保存しています import psycopg2 if name == "main": connector = psycopg2.connect(host="localhost",database="pdb",user="pgusr",password="pgpsw") cursor = connector.cursor() sql = "insert into test_table values('1','python')" cursor.execute(sql) sql = "insert into test_table values('2','パイソン')" cursor.execute(sql) sql = "insert into test_table values('3','ぱいそん')" cursor.execute(sql) connector.commit() cursor.close() connector.close() コマンドを実行するとエラーが返ります Traceback (most recent call last): File "test105.py", line 7, in <module> connector = psycopg2.connect(host="localhost",database="pdb",user="psycopg",password="pgpsw") File "C:\Python27\lib\site-packages\psycopg2\__init__.py", line 164, in connect conn = _connect(dsn, connection_factory=connection_factory, async=async) psycopg2.OperationalError: FATAL: password authentication failed for user "psycopg" コマンドプロンプトで "netstat -anp tcp" を実行し、ローカルアドレスが "0.0.0.0:5432" で状態が "LISTENING" になっております。 何が原因ですか?ご存知の方お教えください

  • pg_prepareが使用できない(Undefined function

    お世話になります。 現在PHPとPostgreSQLでアプリケーションを作成しております。 データベースのセキュリティのために、pg_prepare関数を使い たいのですが、以下のようなエラーが出てしまいます。 Fatal error: Call to undefined function pg_prepare() in ... 該当ソースコードとバージョンは以下のとおりです。 ///ソース $con = pg_connect("user = $DBUSER password = $DBPASSWORD dbname = $DBNAME"); $rst1 = pg_prepare($con, "query", 'SELECT * FROM test WHERE name = $1'); $con = pg_close($con); ///バージョン Apache 2.0.59 PHP 5.1.6 PostgreSQL 8.1.4 何か原因で考えられることはあるでしょうか。 pg_escape_stringもまったく同じエラーが起きてしまい頭を抱えています。お手数かけますがよろしくお願いします。

    • ベストアンサー
    • PHP
  • Pythonの設定方法(text_factory)

    あるシステムを実行すると、下記エラーが表示されました。 --------------- Traceback (most recent call last): File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\api.py", line 446, in send_error data, 'text/html') File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\chrome.py", line 830, in render_template message = req.session.pop('chrome.%s.%d' % (type_, i)) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\api.py", line 216, in __getattr__ value = self.callbacks[name](self) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\main.py", line 306, in _get_session return Session(self.env, req) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\session.py", line 223, in __init__ self.promote_session(sid) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\session.py", line 282, in promote_session @self.env.with_transaction() File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\db\api.py", line 77, in transaction_wrapper fn(ldb) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\web\session.py", line 287, in update_session_id """, (sid, self.req.authname)) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\db\util.py", line 65, in execute return self.cursor.execute(sql_escape_percent(sql), args) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\db\sqlite_backend.py", line 78, in execute result = PyFormatCursor.execute(self, *args) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\db\sqlite_backend.py", line 56, in execute args or []) File "C:\TracLight\python\lib\site-packages\trac-0.12.4.ja1-py2.6.egg\trac\db\sqlite_backend.py", line 48, in _rollback_on_error return function(self, *args, **kwargs) ProgrammingError: You must not use 8-bit bytestrings unless you use a text_factory that can interpret 8-bit bytestrings (like text_factory = str). It is highly recommended that you instead just switch your application to Unicode strings. ----------------- 調査してみたら、Pythonで、 text_factory = str を設定したら良いとわかりましたが、設定方法が わかりません。 対話モードで設定したら良いのでしょうか? Pythonに関しては全然わからないのでどのように設定したら良いかがわかりません。 教えてください。 よろしくお願いします。

  • pg_connect関数

    すみません、質問させてください。 PostgreSQLでPHPの接続をしようと考えています。 Apache, PHP, PostgreSQLのインストールは終了 しています。 PHPのスクリプト内で、 if( !$pg_con=pg_connect("host=$hostname dbname=test user=nobody") ) { と記述して接続を試みているのですが、 Call to undefined function: pg_connect() ・・・ というエラーが出てしまいます。 どのように対処すればいいかアドバイスを下さい。 お願いいたします。

  • データベースに接続できない

    postgresql-7.2.3.tar.gzインストール時には、下記内容でデータベースに接続できていました。 <?php $con = pg_connect("dbname='database_6' user='postgres' password='xxx'") if(!$con){ print "DB connection failed!!\n"; }else{ print "DB connection successful!!\n"; } ?> ところが、postgresql-8.0.26.tar.gzをインストールしたら、上記内容でデータベースに接続できなくなり、 Fatal error: Call to undefined function: pg_connect() in /usr/local/apache/htdocs/sql.php on line 2 というエラーメッセージが表示されます。 phpinfo();で確認もしましたが、ない感じです。Additiional Modulesのどこかを見れば、いいのでしょうか? pgsql.soは/usr/local/lib/php/extentions/pgsql.soにあります。/usr/local/lib/php.iniのextention_dir = ./を以下のように修正し、 extention_dir = /usr/local/lib/php/extentions extention=pgsql.so /usr/local/apache/bin/apachectl restart も実行しています。

  • VBからストアドの動的SQLを呼んで値をレコードセットで取得する方法

    お世話になります。 VBからストアドの動的SQLを呼んで、VB側で値をレコードセットで取得する方法を探しています。 ■ストアド CREATE OR REPLACE PACKAGE SAMPLE as CURSOR c2 IS select A from TBL; TYPE TANTOYOSANDATA IS REF CURSOR RETURN c2%ROWTYPE; PROCEDURE GetNUMBER(C IN NUMBER,           CU OUT TANTOYOSANDATA); end; / -- CREATE OR REPLACE PACKAGE BODY SAMPLE IS PROCEDURE GetNUMBER(C IN NUMBER,             CU OUT TANTOYOSANDATA) IS CUR INTEGER; STATUS INTEGER; ROW_PROCESSED INTEGER; A NUMBER; BEGIN --カーソルをOPENする CUR :=DBMS_SQL.OPEN_CURSOR; DBMS_SQL.PARSE(CUR,'SELECT A FROM TBL ',DBMS_SQL.V7); DBMS_SQL.DEFINE_COLUMN(CUR,1,A); ROW_PROCESSED :=DBMS_SQL.EXECUTE(CUR); STATUS :=DBMS_SQL.FETCH_ROWS(CUR); WHILE (STATUS <> 0) LOOP DBMS_SQL.COLUMN_VALUE(CUR,1,A); STATUS :=DBMS_SQL.FETCH_ROWS(CUR); END LOOP; END; END SAMPLE; / ■VB側 Set GoORASESSION = CreateObject("OracleInProcServer.XOraSession") Set GoORADATABASE = GoORASESSION.OpenDatabase(dbname, cnuser, ORADB_DEFAULT) Set Recordset = GoORADATABASE.CreatePLSQLDynaset("Begin SAMPLE.GetTANTOINFO(1,:CU)); end;", "CU", ORADYN_DEFAULT) ' If Recordset.EOF Then Do While Not Recordset.EOF Label11.Caption = Recordset(0) Recordset.movenext  Loop 復帰値をRecordSetで受けて それをまわしながら1レコードずつ取得する方法を探しています よろしくお願いします。

  • PerlでSQLiteを使おうとしてもうまく行きません

    下記のような感じでPerlプログラムからSQLiteのデータベースから読み出すプログラムを組んでみました。 もちろん、実際にデータベースのファイルを作ってあります。 下のように、かなりシンプルで簡単なプログラムですし、 間違ってもいないとは思うのですが・・・ use DBI; $db = DBI->connect("dbi:SQLite:dbname=accountdb","","",); $sth = $db->prepare("SELECT * FROM user"); $sth->execute;#結果を取得しresに代入 print "$sth\n"; $sth->finish; exit; 上を実行した結果は、下記の通りです。 DBI::st=HASH(0x32706c4) closing dbh with active statement handles during global destruction. 私が思うに、データが$sthに帰って来ると思うのですが、 実際にはDBI::st=HASH(*****)のようなものしかかえってきません アドバイスをどうか宜しく御願いします (別カテゴリで似たような質問をさせていただきましたが、これはまた別です・・・)

  • pg_copy_fromの使い方について質問です。

    pg_copy_fromの使い方について質問です。 <?php $a = array(1,2); $con=pg_connect("host=localhost dbname=byoin port=5432 user=postgres"); if (!$con) { die("データベースが開けません。<br>\n"); } pg_copy_from($con,ccc,$a,","); pg_close($con); ?> のようにすると、 Warning: pg_copy_from() [function.pg-copy-from]: Copy command failed: ERROR: 列"eee"のデータがありません CONTEXT: cccのCOPY。行番号 1: "1" in C:\xampp\htdocs\c.php on line 7 のようにエラーが出ます。 ちなみにデータベースは、 cccというテーブルの中にddd(integer not null、主キー)とeee(integer)の2列が作ってあります。 どうすれば、コピーがうまく出来るのでしょうか? ご回答をお願い致します。

    • ベストアンサー
    • PHP
  • PerlからSQLiteをうまく扱えません

    以下のような感じで、 Perlから、SQliteのデータベースと、そのテーブルを作成し INSERTさせてみるのを組んでみたのですが うまく行かないようです・・・。 何が原因なのかどうすればうまくいくのか、教えていただけないでしょうか。 よろしく御願いします。 #!/usr/bin/perl use DBI; $dbfilename = "./testdb"; &dbcon; $sth = $db->prepare("INSERT INTO user VALUES(\'1\',\'abc\')"); $sth->execute; $sth->finish; &dbuncon; exit; sub dbuncon { $db->disconnect; } sub dbcon { $makedbflag = '0'; unless (-f $dbfilename) { $makedbflag = "1"; } $db = DBI->connect("dbi:SQLite:dbname=$dbfilename","","",); if($makedbflag eq "1") { &dbmaketable; } } sub dbmaketable { $sql = "CREATE TABLE user (id, name);"; $db->do($sql); }